我有C ++:
void __declspec(dllexport)foo(HWND wnd)
在C#中
[DllImport("MyDll.dll", CharSet = CharSet.Ansi)] public static extern void foo(IntPtr wnd);
当我试图调用它时出现此错误 - 附加信息:无法在DLL中找到名为“foo”的入口点。我试图检查dll,我的功能与以下定义相同:
未修饰的C ++函数: void cdecl foo(struct HWND *)
我在几个论坛上搜索过,似乎这是正确的方法...你知道为什么我有这个运行时错误吗?
答案 0 :(得分:4)
您需要禁用C ++名称修改。像这样声明你的原生函数:
extern "C" __declspec(dllexport) void foo(HWND wnd)
您也可以使用dumpbin.exe实用程序查看DLL导出。