我在 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 *)
我在几个论坛上进行了搜索,似乎这是执行此操作的正确方法...您知道为什么我会出现此运行时错误吗?
最佳答案
您需要禁用 C++ 名称修改。像这样声明您的 native 函数:
extern "C" __declspec(dllexport) void foo(HWND wnd)
您也可以使用 dumpbin.exe 实用程序查看 DLL 导出。
关于c# - 在 dll 中导出并从 C# 加载的 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822613/