C ++将Sytem :: String ^转换为LPCOLESTR [英] C++ Convert Sytem::String^ to LPCOLESTR

查看:224
本文介绍了C ++将Sytem :: String ^转换为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆