P / Invoke c#和native c ++

时间:2013-11-20 23:24:12

标签: c# c++ wpf visual-c++ native-code

我的c#非常糟糕,以后我会得到一本书或其他东西来改进它。现在,我在c#wpf中有一个gui,在本机c ++中有一个dll库。我在互联网上看到的用于p / invoke的所有教程中都没有类。

这是我的代码在c ++中的样子:

//Dostuff.h

class foo {
__declspec(dllexport) void dostuff();
 }

我如何从c#调用dll?提前谢谢。

1 个答案:

答案 0 :(得分:1)

没有包装器的C ++库在构建它的C ++编译器之外通常是无用的。 C#不会让你轻松使用这样的库......即使你设法做到这一点,事情也可能会以各种有趣的方式破解。

但是你有两个相对安全的选择:

  • 在库中导出一组extern "C"包装函数。您将获取指向要使用的对象的指针,并在该对象上调用函数。如果你走那条路,那就差不多了你可以达到普遍兼容的路线;任何可以调用C函数的语言都可以使用该库。
  • 如果您使用的是Visual C ++,则可以针对.net执行类似的操作。在C ++ / CLI中编写一个包装器,编译.net,但将调用转发给本机库。