我必须将许多C ++代码转换为C ++ / CLR,以供使用C#编写的前端使用。
在C ++ / CLR中这两种C ++方法的适当声明是什么?
MyClass& MyMethod1();
MyClass* MyMethod2();
原始代码是用Embarcadero XE2编写的,现在的环境是visualC ++ 由于有太多要转换的代码,我真的很想保留尽可能多的代码。原来代码中使用的商业组件(Embarcadero)现在也是CLR组件,因此我几乎不得不将旧代码转换为C ++ / CLR。
答案 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();
}
};
这等效于指向类对象的指针。