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

时间:2011-01-27 22:21:46

标签: 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 *)

我在几个论坛上搜索过,似乎这是正确的方法...你知道为什么我有这个运行时错误吗?

1 个答案:

答案 0 :(得分:4)

您需要禁用C ++名称修改。像这样声明你的原生函数:

extern "C" __declspec(dllexport) void foo(HWND wnd)

您也可以使用dumpbin.exe实用程序查看DLL导出。