在C#应用程序中使用现有的C ++代码

时间:2013-05-27 02:55:20

标签: c# c++ interop

我想在新的C#应用​​程序中使用一些现有的C ++类(包括方法和#define常量,以及一些额外的C风格函数)。最好的方法是什么?我宁愿将所有内容链接到一个exe中,所以如果可能的话,不要使用DLL,只需链接到类库中。

最好的方法是什么? 它是相当直接的,还是我最好将我的原始代码移植到C#?

2 个答案:

答案 0 :(得分:4)

据我所知,您最好的选择可能是将代码转换为C ++ / CLI,如果您想将它们放入项目/解决方案中。

如果您只想将这些C ++代码称为外部库,则可以使用P / Invoke。但我对它的体验一直很痛苦。除了相当琐碎的东西,它有一个陡峭的学习曲线。但是,关于SO的主题(如Hans Passant),确实有知识渊博的人可以帮助你。

当然,您总是可以选择用C#重写所有内容。

答案 1 :(得分:1)

您应该可以使用PInvoke/DLLIMPORT来调用C, C++中的任何功能。

更新1

  

我在调用C函数方面取得了成功,但没有成功调用C ++类/方法。

您必须使用托管C ++才能执行此操作。 This文章应该有所帮助..

更新2 :按David的建议重新排列。

对于 纯C风格实现 ,您可以使用P/Invoke。 参考您可以使用LibGit2Sharp项目。哪个使用C.exe中的原生C#。 以下是DllImport来电Native Methods

注意:在这里,你必须发送exe,它不能编译成任何其他.Net程序集。