-1

我已经讨论了这两个问题:

可以从 C# 调用 C++ 代码吗?

用 C++/CLI 包装非托管 C++ - 一种正确的方法

我也读过一些关于 的东西C++/CLI,但老实说我很困惑。

我有一个VC++项目,我想把它转换成一个C#项目。

我的问题是:

  1. 我是否需要C++/CLI用于此目的以及如何使用?
  2. 我是否必须在我的新项目上为原始项目的每个方法实现一个包装类,如果不是,我该如何进行?
4

1 回答 1

1

1)是的,你需要 C++/CLI

2)不,您不需要为每个方法制作一个包装类,您只需为您拥有的每个 C++(本机)类制作一个包装类,类似于声明一个接口

用 C++/CLI 包装非托管 C++ - 一种正确的方法

是一个只有一种方法的例子,但是如果你用 C++ 编写的 NativeType 类型的类有另一种方法,例如:

void Method2()

刚上同一堂课

   void ManagedMethod2()
      { NativePtr->Method2(); } 

所以整个包装类将是:#include "NativeType.h"

public ref class ManagedType
{
     NativeType*   NativePtr; 

public:
     ManagedType() : NativePtr(new NativeType()) {}
     ~ManagedType() { delete NativePtr; }

     void ManagedMethod()
      { NativePtr->NativeMethod(); } 

     void ManagedMethod2()
      { NativePtr->Method2(); } 
}; 

总是从上面的链接调用 C# 中的方法 2,你会这样做:

mt.ManagedMethod2();
于 2013-11-08T15:45:20.597 回答