簡體   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