C#和C++库

5
  • 我想知道能否在C#中使用C++编写的
  • 问题是该库有自己的结构和类...我能在C#中使用吗?

谢谢

编辑
这个库是开源的..
所以如果我的需求需要C++代码中的特殊内容,我将能够做到...

3个回答

3
有两种方法,都使用适配器(将C++类映射到.NET类):
  • C++/CLI
  • COM
前者避免了通过COM进行转换,大部分C++代码可能只需使用正确的开关进行编译即可。
另外:理论上,P/Invoke可能是可行的,但所有的C++语义都会丢失,您需要手动处理C++对象生命周期(以及实例引用作为IntPtr)。当然,您还需要调用修饰过的名称...

3

另一个选择是使用C++/CLI编写托管包装器。我更喜欢这种方式,而不是使用P/Invoke。


3
您不能直接在托管代码中使用C++类。 主要问题是无法使用与C++代码相同的内存分配器,以及无法轻松调用构造函数和析构函数。 一位Microsoft员工发布了博客文章以表明这并非不可能。 我不建议这样做。
COM是一种解决方案,但通常需要进行相当大的重写和良好的COM编程技巧。 C++/CLI语言中的托管类包装器通常是最佳解决方案。 您可以查看SWIG工具,考虑自动生成这些包装器类。 但请注意,此工具可能会比解决的问题更多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接