Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我编写了全部原生 C++ 代码 dll,我想使用 P/Invoke 通过 C# 代码调用他的方法。我需要为此更改本机 dll 的属性吗?
P/Invoking 需要 stdcall 约定。所以看看你的所有函数声明是否都在 __stdcall 之前。否则堆栈会损坏。
另请查看PInvokeStackImbalance C# 对非托管 C++ 函数的调用
不,您不需要更改 DLL 本身的属性,但您需要确保调用约定与 C# 中使用的约定匹配。然后,您需要在 C# 中声明您的可调用函数,并使用匹配的参数和 C++ 中的返回类型。
现在您可以在 C# 中调用您的函数。
除了 C++ 函数的调用约定之外,它应该相当容易。