使用 VS2010,我正在围绕一个在其公共接口中使用 MFC CStrings 的非托管 C++ DLL 构建一个 C++/CLI 包装 DLL。非托管 C++ DLL 包含一个我需要访问的类。我的问题是这个类包含使用 CString 引用的方法,例如:
BOOL GetUnits(eSysOfUnits sysUnit, CString &Unit, Cstring &Format);
在我的 C++/CLI 包装器中,我试图像这样访问它
BOOL GetUmUnits(eSysU sysunit, String^ %cunit, String^ %format)
{
GetUnits(sysunit, marshal_as<CString>(cunit), marshal_as<CString>(format));
}
这给了我一个编译器错误说明
C2665: msclr::interop::marshal_as : 3 个重载都不能转换所有参数类型
GetUmUnits 将通过 C# 表单访问。cunit 和 format 需要由非托管代码更新。
我做错了什么不可能吗?