如何将C ++参考和指针转换为C ++ / CLR

时间:2019-04-09 14:03:29

标签: c++ migration clr

我必须将许多C ++代码转换为C ++ / CLR,以供使用C#编写的前端使用。

在C ++ / CLR中这两种C ++方法的适当声明是什么?

MyClass& MyMethod1();

MyClass* MyMethod2();

原始代码是用Embarcadero XE2编写的,现在的环境是visualC ++ 由于有太多要转换的代码,我真的很想保留尽可能多的代码。原来代码中使用的商业组件(Embarcadero)现在也是CLR组件,因此我几乎不得不将旧代码转换为C ++ / CLR。​​

2 个答案:

答案 0 :(得分:0)

我在将C ++ CLI与C#编写的.Net应用程序结合使用方面有一些经验。我的建议不是转换整个C ++库,而是编写接口包装程序,例如:

@Override
protected void onResume() {
    super.onResume();
    Intent intent = getIntent();
    if (intent.hasExtra("NOTIFICATION_PACKET")) {
        Log.e(TAG, "The following data was received from the notification packet: " + getIntent().getStringExtra("NOTIFICATION_PACKET"));
        getIntent().removeExtra("NOTIFICATION_PACKET");
    }
}

是的,仍然有很多工作(您需要为所有接口实体,参数,枚举等创建包装器。但是,与迁移所有代码相比,这还需要花费更少的工作。

答案 1 :(得分:0)

两个函数都应将句柄返回到引用类型,即

ref class SomeClass
{
public:
    MyClass ^MyMethod1()
    {
        return gcnew MyClass();
    }

    MyClass ^MyMethod2()
    {
        return gcnew MyClass();
    }
};

这等效于指向类对象的指针。