在C#中使用C++dll对象
本文关键字:C++dll 对象 | 更新日期: 2023-09-27 18:21:39
我有一个第三方C++.dll,它导出了一些我想从C#中使用的类。dll是一个Win32应用程序,我正在使用VS2013运行Windows 8.1。当我设置在"任何CPU"下运行的C#程序时,我会收到错误"System.BadImageFormatException"。我在其他地方读到,这可能是由x86和x64组合引起的。所以我将C#程序重新编译为x86。现在我得到"无法加载DLL"libsword.DLL":找不到指定的模块"。我已经确定dll在正确的目录中。
所有这些都可以在使用Mono的Linux上正常工作。
在这一点上,我不知道如何继续。
谢谢,Jon
您需要为C++代码创建C#声明,以便.NET知道如何从托管(.NET/C#)代码转换为本机(C++)代码。这相当复杂,具体取决于第三方库中的代码。我无法推测你需要做什么。
问题出在C++库中,该库最初是为Linux编写和开发的。出口被定义为:
define SWDLLEXPORT _declspec( dllexport )
其被用作:
const char * SWDLLEXPORT function_name(args)
它在Linux中工作,但在Windows中不工作。将函数签名更改为:
const char SWDLLEXPORT * function_name(args)
适用于Linux和Windows。