【发布时间】:2014-02-23 06:48:41
【问题描述】:
我正在从文本框中读取路径,然后尝试打开图像
String^ P = path->Text;
IplImage* img = cvLoadImage(P);
它给了我以下错误
Error 1 error C2664: 'cvLoadImage' : cannot convert parameter 1 from 'System::String ^' to 'const char *'
谁能告诉我如何将它转换为 char *。
【问题讨论】:
-
首先,您必须知道要转换为哪种字符集和编码。您可能希望使用线程的当前“代码页”,这取决于操作系统设置、用户设置和线程调用或从其父线程继承的 API 函数。另一种选择是 UTF-8。它在 Internet 和其他操作系统中广泛使用,并且是许多 .NET 文件函数使用的默认字符集/编码。显然,由于您将其传递给库函数,因此您需要确保库可以获取您传递的内容。
-
第二,你要知道原生字符串的生命周期和所有权传递的要求。我的猜测是它可以在块的末尾被销毁。如果是这样,您可以使用自动执行此操作的转换,从而消除对 @user2740528 的 answer 中省略的 FreeHGlobal(@Hans 指出)的需要