将无法识别的类型字符串转换为System :: String(C ++ / CLI)

时间:2017-03-24 11:40:43

标签: .net c++-cli

我一直在努力使用C ++ / CLI中的新项目。我设法解决了我在这种语言上遇到的大部分问题(大多数是关于C#或本机C ++代码的翻译)。但我还有一个大问题:

我使用(本机)C ++库作为非托管代码来检索图像和内容(基本OCR)的信息。这个库为我提供了输出的特定类型。他们中的大多数是bool或int,所以我可以在C ++ / cli中处理它们,但我有一个非标准的字符串输出格式(gxOutString),我无法处理。我只是得到一个错误说:

m_codeString = reader.GetCodeString();
"there is no conversion between "gxOutString" and "System::String ^"

我知道图像已被处理并且库识别的代码字符串(因为校验和验证返回true,其他变量也会检出),但我还没有设法对此字符串执行任何操作要检索的重要元素。

在控制台本机C ++中,这个变量可以正常打印在cout中,并且可以通过Qt中的C ++通过QtString处理(从我作为示例的其他程序)。

如何处理此类型以便其他托管C ++ / cli代码可以理解它?

1 个答案:

答案 0 :(得分:-1)

所以经过一些调查后,我在标题中找到了两个引用(来自我使用的另一个库):

typedef std::string gxOutAString;
typedef std::wstring gxOutString;

毕竟,事实证明它是 std :: string

我的转换解决方案:

gxOutAString temp_codeString = reader.GetCodeString();
m_codeString = gcnew String(temp_codeString.c_str());

即使我仍然在弄清楚马歇尔如何为#34;反向"转换。 还是非常感谢。 令人难以置信的是,只有通过解释并获得小建议才能解决严重错误。