使用 Pascal 调用约定调用本机方法
Pinvoke native method with pascal callingconvention
我有一个旧的 c++ 库,所有方法都使用 pascal 调用约定导出,
据我所知,c# marshaller 不支持 pascal 调用约定,
我可以在 C# 端使用 stdcall 并以相反的顺序传递参数吗?
pascal
是 16 位调用约定,在 32 位代码中它被 __stdcall
取代。保留标识符是为了保持源兼容性。 CallingConvention.StdCall 是 pinvoke 的默认设置,因此不需要什么特别的东西。
您可以在 this post 中找到有关 DllImport.CallingConvention 的更多信息,它提到了 pascal。
我有一个旧的 c++ 库,所有方法都使用 pascal 调用约定导出, 据我所知,c# marshaller 不支持 pascal 调用约定, 我可以在 C# 端使用 stdcall 并以相反的顺序传递参数吗?
pascal
是 16 位调用约定,在 32 位代码中它被 __stdcall
取代。保留标识符是为了保持源兼容性。 CallingConvention.StdCall 是 pinvoke 的默认设置,因此不需要什么特别的东西。
您可以在 this post 中找到有关 DllImport.CallingConvention 的更多信息,它提到了 pascal。