【发布时间】:2014-11-02 10:19:49
【问题描述】:
考虑以下代码(可行!):
int SetInputFile( const CString& fileName );
int SetInputFile(System::String^ fileName)
{
const char* str = (char*)(void*)Marshal::StringToHGlobalAnsi(fileName);
return m_Native->SetInputFile(str);
}
如何使用此输入处理/转换案例?
int SetInputFiles( const CStringArray& fileNames );
【问题讨论】:
-
您不能从 C# 调用带有
CStringArray参数的方法。 C# 不知道CStringArray是什么。重新设计本机方法,使其可从 C# 访问。 -
Alex Farber - 喜欢更改为 Const CString&[] 加上长度?
-
同样的错误 -
CString将不起作用。 C# 只能处理普通类型(如 int、char)、普通 C 样式字符串(如 char*、wchar_t*)、包含这些类型的数组和结构。不要尝试在互操作代码中使用 MFC 类型。 -
int SetInputFiles(wchar_t** strings, int size)适用于本机互操作功能。 IntPtr 结构和 Marshal 类包含为此函数提供输入所需的所有内容。 -
我问是因为使用元帅转换将 CString& 作为单个对象工作...
标签: c++ string dll native cstring