C#调用C++编写的DLL提示无法在 DLL“Handwriting.dll”中找到名为“Compare”的入口点
DLL文件中函数为
extern "C" __declspec(dllexport)
extern void __stdcall Compare(CharType * cChar,short int cReturn[10])
C#
[DllImport("Handwriting.dll", EntryPoint = "Compare", SetLastError = true)]
private static extern void Compare(CharacterType cChar, int cReturn);
然后调用
Compare(c,r[0]);
为何一直提示无法在 DLL“Handwriting.dll”中找到名为“Compare”的入口点
------解决方案--------------------
------解决方案--------------------
呵呵 好怀念啊 当年纠结这个问题也纠结了好久
应该是结构体的对齐引起的
在C#的结构体CharacterType的定义前加入[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
其中具体的值你可以看文档,然后根据你自己的情况调整
另外,由于你的函数中传递是是结构体指针,所以在C#中 结构体前需要加ref关键字
private static extern void Compare(ref CharacterType cChar, int cReturn);
还不行再问我,这个我还算是有点经验了,不过隔的太久,也有点忘了