Tag: cdecl

PInvoking C ++ DLL时出现AccessViolationException(cdecl调用约定问题?)

我整天都在研究这个问题,而且我并不聪明: 我有一个C#DLL,PInvokes C ++ DLL中的方法。 在调试模式下编译时我没有遇到任何问题,但在Release模式下编译时,我得到一个AccessViolationException。 谷歌搜索这个问题告诉我,它可能是不合规的调用约定的问题。 代码现在在C#中看起来像这样: [return: MarshalAs(UnmanagedType.U1)] [DllImport(“Native.dll”, CallingConvention = CallingConvention.Cdecl)] internal static extern Boolean AMethod(Int32 mode, byte frame); 在C ++中: extern “C” { DLL_EXPORT bool AMethod(int mode, BYTE frame) { … } } 我已经在VS2010中使用__cdecl调用约定设置了C ++项目,但我仍然得到了AccessViolationException,我不知道我还能做些什么。 我应该注意我的C ++ DLL使用第三方DLL,我不知道他们使用什么调用约定。 任何帮助,将不胜感激! 哦,我的开发机器上没有例外,只在我的目标系统上。

C#获取非托管C dll导出列表

我有一个带有导出函数的C dll 我可以使用命令行工具dumpbin.exe / EXPORTS来提取导出函数的列表,然后在我的C#代码中使用它们(成功)调用这些函数。 有没有办法直接从.NET获取这个导出函数列表,而无需使用外部命令行工具? 谢谢