我调用这个C++DLL正确吗

本文关键字:C++DLL 调用 | 更新日期: 2023-09-27 18:26:10

我需要从C#调用一个C++DLL函数,C++函数的定义是

DWORD Init(char*[],int,int,int);

我用C#称之为

[DllImport("DLLTest.dll")]
unsafe public static extern int Init(string[] detailsarray, int amount, int ID1, int ID2);
//then in main...
string[] details = new string[3];
details[0] = "blahblah";
details[1] = "bloobloo";
details[2] = "1234";
int result = Init(details, 1, 16, 170);

当我运行它时,我会得到一个类型为System.BadImageFormatException的未处理异常。我认为当C++DLL需要char*s时,通过字符串是可以的,我也认为在C#中使用int代替C++中的DWORD是可以的。但如果我的错误,请告诉我。

谢谢。

编辑-我应该补充一点,我已经在C++应用程序中测试了DLL,它运行良好。

我调用这个C++DLL正确吗

如果您试图将32位DLL加载到64位进程中,则经常会发生BadImageFormatException,反之亦然。如果DLLTest.dll是一个32位dll,您需要为x86平台编译C#dll,而不是任何CPU

http://msdn.microsoft.com/en-us/library/zekwfyz4(v=vs.100).aspx

http://davidstechtips.com/wp-content/uploads/2010/06/VisualStudioPlatformTargetx86.png