将VC ++项目转换为C#

时间:2013-11-08 15:28:12

标签: c# visual-c++ c++-cli

我已经完成了这两个问题:

Possible to call C++ code from C#?

Wrapping unmanaged C++ with C++/CLI - a proper approach

我还阅读了一些关于C++/CLI的内容,但说实话,我很困惑。

我有一个VC++项目,我想将其转换为C#项目。

我的Qs是:

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

1 个答案:

答案 0 :(得分:1)

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

2)不,你不需要为每个方法创建一个包装类,你需要为你拥有的每个C ++(native)类创建一个包装类,它类似于声明一个接口

Wrapping unmanaged C++ with C++/CLI - a proper approach

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

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#中的method2,你会这样做:

mt.ManagedMethod2();