繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM