安庆做网站企业,接单做网站的,常见的英文网站,合肥市住房和建设局网站先说出错原因: 堆栈调用顺序 解决办法: 使用 __stdcall 或 使用C#属性 CallingConvention 起因是我想在c#中调用c函数结果出错了 如下 C 头文件 #define DLLExport extern C __declspec(dllexport)DLLExport int func(int a, int b);DLLExport void init…先说出错原因: 堆栈调用顺序 解决办法: 使用 __stdcall 或 使用C#属性 CallingConvention 起因是我想在c#中调用c函数结果出错了 如下 C 头文件 #define DLLExport extern C __declspec(dllexport)DLLExport int func(int a, int b);DLLExport void init(); C# [DllImport(func.dll)] public static extern int func(int a, int b);[DllImport(func.dll)] public static extern void init(); 调用时总是发生错误,只有init调用时不会出错,在搜索了很久之后我在C函数上加了一个 __stdcall 描述符,即堆栈调用顺序的改变, PS:非托管dll使用的是stdcall,详见官方文档 就可以正常调用了转载于:https://www.cnblogs.com/night-ride-depart/p/4748266.html