首页 > 解决方案 > 如何将 C++ 引用和指针返回转换为 C++/CLR

问题描述

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

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

MyClass& MyMethod1();

MyClass* MyMethod2();

原来的代码是用 Embarcadero XE2 写的,现在环境是 visualC++ 既然要转换的代码太多了,我真的很想尽可能地保留。此外,在原始代码中使用的商业组件(Embarcadero)现在是 CLR 组件,因此我几乎必须将旧代码转换为 C++/CLR。

标签: c++migrationclr

解决方案


我在使用 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;
};

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


推荐阅读