使用VS2010我正在围绕非托管C++ DLL在其公共接口中使用MFC CStrings构建C++/CLI包装器DLL。非托管C++ DLL包含我需要访问的类。我的问题是,这个类包含使用CString的引用,如方法:如何使用CString调用非托管C++ DLL参考
BOOL GetUnits(eSysOfUnits sysUnit, CString &Unit, Cstring &Format);
在我的C++/CLI包装IM试图访问它像这样
BOOL GetUmUnits(eSysU sysunit, String^ %cunit, String^ %format)
{
GetUnits(sysunit, marshal_as<CString>(cunit), marshal_as<CString>(format));
}
这给我一个编译器错误,指出
C2665:msclr ::互操作:: marshal_as:无3超负荷可以转换所有的参数类型
GetUmUnits将以C#形式访问。 cunit和格式需要由unmananaged代码更新。
我做错了什么是不可能的?
我实际上做了一个转换,以便CString cs(cuint)和格式安全,然后调用GetUnits(sysunit,cs,cs2),这会将其转换回使用marshal_as的字符串^。有用。所以我想我回答了我自己的问题。但即时通讯想知道它的安全吗? – user1304232 2012-04-26 17:52:49