c# - 在 dll 中导出并从 C# 加载的 C++ 函数

标签 c# c++ dll dllimport

我在 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/

相关文章:

c# - 实现复合数据类型的自定义 XML 序列化/反序列化?

c++ - "."、 "::"和 "->"之间的区别

C# 编码(C# 调用 C++ DLL)

java - 在 iphone 应用程序上使用 java 库

c# - Linq 在同一个列表中添加相同的项目

c# - 从同一解决方案 MVC 中的不同项目访问 EF ConnectionString

c# - 使用 react 性扩展每秒按顺序获取下一个事件

c++ - C++ 程序中非常奇怪的堆栈溢出

c++ - QTcpSocket及删除

Java JNA 调用 dll Advapi32 中的函数 "InitiateSystemShutdown"不起作用