C ++将Sytem :: String ^转换为LPCOLESTR [英] C++ Convert Sytem::String^ to LPCOLESTR
问题描述
我以混合模式(C ++ / CLI)编写,但无法解决此问题:
I write in mixed mode (C++/CLI) and I can not resolve this problem:
String ^progID = "Matrikon.OPC.Server";
CLSID clsid;
HRESULT result = CLSIDFromProgID(progID, &clsid);
错误C2664:'CLSIDFromProgID':无法将参数1从'System :: String ^'转换为' LPCOLESTR'
error C2664: 'CLSIDFromProgID' : cannot convert parameter 1 from 'System::String ^' to 'LPCOLESTR'
如何将 String ^
转换为 LPCOLESTR
?
谢谢!
How can I convert String^
to LPCOLESTR
?
Thanks!
推荐答案
首先,让我们将System :: String转换为char *
First, lets convert System::String to char*
IntPtr p = Marshal :: StringToHGlobalAnsi(progID);
char * pNewCharStr = static_cast< char *>(p.ToPointer());
second,将char *转换为使用ATL转换宏的LPCOLESTR:
second, casting char * to LPCOLESTR using ATL conversion macro:
LPCOLESTR convert_string = A2COLE(pNewCharStr);
这篇关于C ++将Sytem :: String ^转换为LPCOLESTR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!