AccessViolationException 当 PInvoking C++ DLL (cdecl 调用约定问题?)

本文关键字:约定 调用 问题 cdecl PInvoking C++ DLL AccessViolationException | 更新日期: 2023-09-27 17:55:52

我花了一整天的时间研究这个,但我一点也不聪明:

我有一个 C# DLL,它可以调用C++ DLL 中的方法。在调试模式下编译时,我这样做没有问题,但是在发布模式下编译时,我得到了一个访问违规异常。谷歌搜索这个问题告诉我,这可能是不合规的调用约定的问题。代码现在在 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)
     {
      ...
     }
}

我已经将C++项目设置为使用 VS2010 中的__cdecl调用约定进行编译,但我仍然得到 AccessViolationException,我不知道我还能做什么。我应该注意,我的C++ DLL使用第三方DLL,我不知道他们使用什么调用约定。

任何帮助将不胜感激!

哦,我的开发机器上没有异常,只在我的目标系统上。

AccessViolationException 当 PInvoking C++ DLL (cdecl 调用约定问题?)

尝试对语句进行重新排序:

[DllImport("Native.dll", CallingConvention = CallingConvention.Cdecl)][返回: 元帅(非托管类型.U1)]内部静态外部布尔值 AMethod(Int32 模式,字节帧);