2011-01-27 96 views
1

我在C++加載:C++函數導出在DLL和從C#

空隙__declspec(dllexport)的FOO(HWND WND)

而在C#

[DllImport("MyDll.dll", CharSet = CharSet.Ansi)] 
public static extern void foo(IntPtr wnd); 

當我試圖調用它時我有這個錯誤 - 附加信息:無法找到名爲' foo'在DLL中。我試圖檢查的dll和我有休耕定義功能:

未修飾C++函數: 無效CDECL富(結構HWND *)

我搜索了幾個論壇,並似乎這是正確的方法做到這一點...你知道我爲什麼有這個運行時錯誤嗎?

+0

看看我的問題,也許幫忙! http://stackoverflow.com/q/4108181/375958 – Jalal 2011-01-27 22:40:03

回答

4

您需要禁用C++名稱修改。聲明您的本地函數是這樣的:

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

您也可以使用dumpbin.exe實用程序來查看DLL導出。

+0

它的工作原理,謝謝!我將在11分鐘內接受答案:P – Felics 2011-01-27 22:25:42