[英]How to convert C++ reference- and pointer returns to C++/CLR
我必须将许多C ++代码转换为C ++ / CLR,以供以C#编写的前端使用。
在C ++ / CLR中这2个C ++方法的适当声明是什么?
MyClass& MyMethod1();
MyClass* MyMethod2();
原始代码是用Embarcadero XE2编写的,现在的环境是visualC ++。由于要转换的代码太多,所以我真的想保留尽可能多的代码。 现在,原始代码中使用的商业组件(Embarcadero)现在也是CLR组件,因此我几乎不得不将旧代码转换为C ++ / CLR。
我在将C ++ CLI与C#编写的.Net应用程序结合使用方面有一些经验。 我的建议不是转换整个C ++库,而是编写接口包装,例如:
// existing unmanaged code
class UnmanagedClass
{
public:
void SomeMethod();
};
// a C++ CLR
ref class ManagedWrapper
{
public:
void SomeMethod()
{
obj->SomeMethod();
}
private:
UnmanagedClass* object;
};
是的,仍然有很多工作要做(您需要为所有接口实体,参数,枚举等创建包装器。但是,与迁移所有代码相比,它的工作量还较少。
这两个函数都应将句柄返回到引用类型,即
ref class SomeClass
{
public:
MyClass ^MyMethod1()
{
return gcnew MyClass();
}
MyClass ^MyMethod2()
{
return gcnew MyClass();
}
};
这将等效于指向类对象的指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.