0

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

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

4

2 回答 2

4

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

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

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

于 2013-05-27T03:01:20.913 回答
1

您应该能够使用PInvoke/DLLIMPORT调用C, C++.

更新 1

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

您必须使用托管 C++ 来执行此操作。 这篇文章应该有帮助..

更新 2:按照建议重新排列David

对于纯 C 风格的实现,您可以使用P/Invoke. 参考您可以使用LibGit2Sharp项目。其中消耗本地人C.exeC#这是DllImport调用本机方法

注意:在这里,您必须提供exe.Net 程序集,它不能编译到任何其他 .Net 程序集中。

于 2013-05-27T03:01:06.043 回答