【问题标题】:Native Dll Call with CStringArray使用 CStringArray 调用本机 Dll
【发布时间】: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


【解决方案1】:

谢谢 Alex FarberNostromoo 在网上搜索后 - 我无法找到这样的转换。在那里,我将界面更改为接收带有分隔符的 const CString& 中的字符串列表。当然,您的建议也是好的和有效的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多