从C#代码调用C ++本机dll

时间:2012-06-05 14:26:54

标签: c# c++ c++-cli

我编写了完整的本机C ++代码dll,我想通过P / Invoke通过C#代码调用他的方法。 我是否需要更改本机dll属性中的内容?

2 个答案:

答案 0 :(得分:3)

P / Invoking需要stdcall约定。因此,查看所有函数声明是否都在__stdcall之前。否则堆栈会被破坏。

另请参阅PInvokeStackImbalance C# call to unmanaged C++ function

答案 1 :(得分:1)

不,您不需要更改DLL本身的属性,但需要确保调用约定与C#中使用的约束匹配。然后,您需要在C#中使用匹配参数声明可调用函数,并返回C ++中的那些函数。

现在您可以使用C#调用您的函数。

除了C ++函数的调用约定之外,它应该相当容易。