c++ - 如何将 C++ 引用和指针返回转换为 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;
};
是的,还有很多工作要做(您需要为所有接口实体、参数、枚举等创建包装器。但与迁移所有代码相比,工作量仍然少。