5
  • 我想知道我是否可以在 C# 中使用一个-C++ 编写
  • 问题是库有自己的结构和类。我可以在 C# 中使用它吗?

谢谢

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

4

3 回答 3

3

有两种方法,都使用适配器(将 C++ 类映射到 .NET 类):

  • C++/CLI
  • 通讯

前者避免通过 COM,并且大部分 C++ 代码可能只需使用正确的开关编译即可。

附加:理论上 P/Invoke 可能是可能的,但所有 C++ 语义都会丢失,您需要手动处理 C++ 对象生命周期(以及实例引用IntPtr)。另外,当然,您需要调用损坏的名称...

于 2010-05-23T15:38:44.393 回答
3

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

于 2010-05-23T15:39:08.467 回答
3

您不能在托管代码中直接使用 C++ 类。主要问题是无法使用与 C++ 代码相同的内存分配器,并且无法轻松调用构造函数和析构函数。一位微软员工发布了一篇博文,表明这并非不可能。我不建议这样做。

COM 是一种解决方案,但它总是需要相当大的重写和良好的 COM 编程技能。C++/CLI 语言中的托管类包装器通常是最好的解决方案。您可以看一下SWIG 工具,以考虑自动生成这些包装器类。但是请注意,此工具很容易产生比它解决的问题更多的问题。

于 2010-05-23T15:52:14.350 回答