将C ++库移植到C#的最佳方法是什么?

时间:2011-08-30 16:31:14

标签: c# c++ port compatibility

我有一个(仅限标题)C ++库,我希望将其移植到C#。它是我为特定目的而制作的win api的包装器。我想将它移植到C#,因为我想使用C#进一步开发它。移植它的最有效(也是最简单?)方法是什么?请注意,我不想要一些繁忙的东西,因为我不想花更多的时间来移植图书馆,而不是首先制作图书馆。那有办法吗?

2 个答案:

答案 0 :(得分:3)

这在很大程度上取决于你的lib有多大,它是如何构建的,你的内存分配方式是什么,你使用了C#中没有的lib多少(比如C ++ std lib),你有多少C ++模板使用过等。

可能有不同的策略

  • 尝试通过您自己的一些代码生成器自动移植(部分)它
  • 不要将它移植到C#,而是使用C ++ / CLI(我过去做得非常成功)
  • 手动执行,因为到目前为止您使用的C ++概念没有很好地映射到C#

“仅限标题”似乎没有真正的区别。事实上,当你只有一个C ++文件被移植到一个C#类文件时,技术上可能会更容易一些。

答案 1 :(得分:0)

我能想到的几种方式。

  1. 手动转换为C#dll,可能有T4代码生成帮助。
  2. 将您的c ++库更改为托管dll,以便在c#项目中使用它。
  3. 当然,您可以在C#项目中使用与c ++库的互操作。但在这种情况下,我不确定你的c ++库的用途,因为你说它是一个包装器。
  4. 由于你已经拥有了可以完全控制的c ++库,我会先尝试使用#2。