我有一些现有的 C++ 类(包括方法和#define 常量,以及一些额外的 C 风格函数),我想在新的 C# 应用程序中使用它们。最好的方法是什么?我宁愿将所有东西都链接到一个 exe 中,所以如果可能的话,不要使用 DLL,而只是链接到类库中。
最好的方法是什么?它是相当直接的,还是我最好将我的原始代码移植到 C#?
据我所知,如果您想将它们放入您的项目/解决方案中,最好的选择可能是将您的代码转换为 C++/CLI。
如果您只想将这些 C++ 代码调用为外部库,则可以使用 P/Invoke。但我的经历是痛苦的。除了相当琐碎的东西之外,它还有一个陡峭的学习曲线。但是确实有知识渊博的人可以帮助您(例如 Hans Passant)关于 SO 的主题。
当然,您始终可以选择用 C# 重写所有内容。
您应该能够使用PInvoke/DLLIMPORT调用C, C++
.
更新 1:
我成功调用了 C 函数,但没有成功调用 C++ 类/方法。
您必须使用托管 C++ 来执行此操作。 这篇文章应该有帮助..
更新 2:按照建议重新排列David
。
对于纯 C 风格的实现,您可以使用P/Invoke
. 参考您可以使用LibGit2Sharp项目。其中消耗本地人C.exe
。C#
这是DllImport
调用本机方法
注意:在这里,您必须提供exe
.Net 程序集,它不能编译到任何其他 .Net 程序集中。