C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
在arm64设备上,使用x64的c#调用由go代码生成的x64的dllC程序会异常,相同dll,使用x64的c++代码调用就没有问题,这是为什么?
在C#中调用C函数时,使用的是标准的Platform Invocation Services (P/Invoke)机制,它依赖于Windows的stdcall调用约定。而在Go语言中,默认使用的是cdecl调用约定。
C# P/Invoke默认使用stdcall调用约定,这与C++中的__cdecl不同,所以你在Go代码中编译的DLL使用的是__cdecl调用约定,这可能会导致调用时的不兼容性。
你可以尝试在Go代码中明确指定使用stdcall调用约定。
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。