jjzjj

DllImport

全部标签

c# - C DLL 中的 PInvoke char* 在 C# 中处理为字符串。空字符问题

CDLL中的函数如下所示:intmy_Funct(char*input,char*output);我必须从C#应用程序调用它。我通过以下方式执行此操作:...DllImportstuff...publicstaticexternintmy_Funct(stringinput,stringoutput);输入字符串完美地传输到DLL(我有可见的证据)。该函数填写的输出虽然是错误的。我有hexa数据,比如:3F-D9-00-01但不幸的是,两个零之后的所有内容都被截断了,只有前两个字节进入了我的C#应用程序。它发生了,因为(我猜)它被视为空字符并将其作为字符串的结尾。知道如何摆脱它吗?我试

c# - 来自 user32.dll 的 FindWindowEx 使用 dllimport 返回零句柄和 127 错误代码

我需要以编程方式处理另一个Windows应用程序,搜索谷歌我找到了一个示例,它使用DLLImport属性处理Windows计算器并将user32.dll函数导入C#中的托管函数。应用程序正在运行,我正在获取主窗口的句柄,即计算器本身,但之后的代码无法正常工作。FindWindowEx方法不返回计算器子项的句柄,例如按钮和文本框。我尝试在DLLImport上使用SetLastError=True并发现我收到错误代码127,即“未找到过程”。这是我从中获得示例应用程序的链接:http://www.codeproject.com/script/Articles/ArticleVersion.

c# - 定向鼠标事件 [DllImport ("user32.dll")] 单击,双击

我试过了[DllImport("user32.dll")]staticexternboolSetCursorPos(intX,intY);并且将光标移动到所需点时效果很好。我以前从未尝试过这种DLL导入,但它有效:)。但是我想要更多我还能提取什么?主要是我想在没有任何鼠标输入的情况下双击、单击或使用滚轮选项,只是代码我该怎么做?以及如何检查user32dll中还包含什么?谢谢 最佳答案 [DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConv

c# - WinForms 文本框的自定义插入符号

我正在WinForms.Net2.0应用程序中开发自定义super终端应用程序。我在面板中有一个多行文本框,您可以在其中与硬件设备进行交互。我的客户想要一个自定义插入符号,一个大小为一个字符空间的填充矩形,而不是默认的垂直线。我知道.Net默认不提供执行此操作的选项,但必须有一些Windows函数才能执行此操作。 最佳答案 这些是Windows提供的nativeCaret函数列表,您可以将它们用于您的应用程序。[DllImport("User32.dll")]staticexternboolCreateCaret(IntPtrhWn

c# - 在 C# 中绑定(bind) C++ dll 时出现 EntryPointNotFoundException

我尝试绑定(bind)一个简单的c++dll,如http://msdn.microsoft.com/en-us/library/ms235636.aspx所示。在我的c#控制台应用程序中,但我在运行时在dll中添加了一个EntryPointNotFoundException。我的测试类是namespaceBindingCppDllExample{publicclassBindingDllClass{[DllImport("MathFuncsDll.dll")]publicstaticexterndoubleAdd(doublea,doubleb);}publicclassProgram

c# - 编码 va_list

我有以下代码:[UnmanagedFunctionPointer(CallingConvention.Cdecl)]publicdelegatevoidPanicFuncDelegate(stringstr,IntPtrargs);privatevoidPanicFunc(stringstr,IntPtrargs){LogFunc("PANIC",str,args);}publicvoidLogFunc(stringseverity,stringstr,IntPtrargs){vprintf($"[{severity}]"+str,args);}[DllImport("libc.so.

c# - 如何使用 C# 获取 char**?

这个问题在这里已经有了答案:MarshalanarrayofstringsfromC#toCcodeusingp/invoke(2个答案)C#callC++DLLpassingpointer-to-pointerargument(3个答案)关闭6年前。我需要以以下形式将参数传递给不安全的DllImported函数:[DllImport("third_party.dll")]privatestaticexternunsafeintstart(intargc,char**argv);我假设它是一个字符串数组。但是,当我尝试执行以下操作时,出现“无法从字符串[]转换为char**”错误。我该

c# - C++/CLI 性能与 native C++ 相比?

早上好我正在编写一个拼写检查器,在这种情况下,它对性能至关重要。那就是,因为我计划连接到数据库并使用C#制作GUI,所以我用C编写了一个编辑距离计算例程,并使用DllImport编译为我在C#中使用的DLL。问题是,我认为(尽管我可能错了)将单词从String一个接一个地编码到char*会导致很多高架。那就是,我考虑过使用C++/CLI,以便我可以直接在.NET中使用String类型......我的问题是C++/CLI性能与nativeC代码相比如何重数学计算和数组访问?非常感谢。 最佳答案 C++/CLI也必须进行某种编码(mar

c# - 如何创建 nim dll 并从 C# 调用它

我已经阅读了几乎所有可以通过谷歌找到的示例,但无法完成最简单的任务创建dll(windows)来自nim谁能一步步解释一下?我正在使用nimIDE-aporia生成代码。构建dll是否需要使用命令行?我想有一个解决方法。使用aporiaIDE\命令行,如何获得与将以下代码编译为dll相同的结果:extern"C"__declspec(dllexport)int__stdcallreturn_multiply(intnum1,intnum2){returnnum1*num2;}您可能知道的代码可以从c#调用 最佳答案 简单的步骤:使用

c# - 尝试加载格式不正确的程序异常会随着 VS 安装而消失

我设计了一个C#Windows应用程序,它也在内部调用一些函数[通过DllImport()从C++DLL导入]我的C++代码在Win32平台中构建为.DLL,而我的C#构建为“任何CPU”平台。当我在我的测试机器上运行.EXE(C#)时,我遇到了一个错误anattemptwasmadetoloadaprogramwithanincorrectformatexceptionfromhresult0x8007000B但是,如果我在我的机器上安装VSS2010然后运行​​EXE,则不会遇到此错误。1)此错误的原因?2)为什么安装VSS时没有观察到错误?我使用Win7操作系统(64位)在Any