C++;将Sytem::String^转换为LPCOLESTR
我以混合模式(C++/CLI)编写,无法解决此问题:C++;将Sytem::String^转换为LPCOLESTR,string,visual-studio-2008,c++-cli,converter,String,Visual Studio 2008,C++ Cli,Converter,我以混合模式(C++/CLI)编写,无法解决此问题: String ^progID = "Matrikon.OPC.Server"; CLSID clsid; HRESULT result = CLSIDFromProgID(progID, &clsid); 错误C2664:'CLSIDFromProgID':无法将参数1从'System::String^'转换为'LPCOLESTR' 如何将String^转换为LPCOLESTR? 谢谢 首先,让我们将System::String转换
String ^progID = "Matrikon.OPC.Server";
CLSID clsid;
HRESULT result = CLSIDFromProgID(progID, &clsid);
错误C2664:'CLSIDFromProgID':无法将参数1从'System::String^'转换为'LPCOLESTR'
如何将String^
转换为LPCOLESTR
?谢谢 首先,让我们将System::String转换为char*
IntPtr p=Marshal::StringToHGlobalAnsi(progID);
char*pNewCharStr=static_cast(p.ToPointer())代码>
其次,使用ATL转换宏将char*强制转换为LPCOLESTR:
LPCOLESTR转换的字符串=A2COLE(pNewCharStr)代码>首先,让我们将System::String转换为char*
IntPtr p=Marshal::StringToHGlobalAnsi(progID);
char*pNewCharStr=static_cast(p.ToPointer())代码>
其次,使用ATL转换宏将char*强制转换为LPCOLESTR:
LPCOLESTR转换的字符串=A2COLE(pNewCharStr)代码>首先,让我们将System::String转换为char*
IntPtr p=Marshal::StringToHGlobalAnsi(progID);
char*pNewCharStr=static_cast(p.ToPointer())代码>
其次,使用ATL转换宏将char*强制转换为LPCOLESTR:
LPCOLESTR转换的字符串=A2COLE(pNewCharStr)代码>首先,让我们将System::String转换为char*
IntPtr p=Marshal::StringToHGlobalAnsi(progID);
char*pNewCharStr=static_cast(p.ToPointer())代码>
其次,使用ATL转换宏将char*强制转换为LPCOLESTR:
LPCOLESTR转换的字符串=A2COLE(pNewCharStr)代码>避免对每个钉子使用锤子。C++/CLI允许您同样轻松地使用本机类型。所以很简单:
LPCOLESTR progid = L"Matrikon.OPC.Server";
// etc..
您可以简单地使用Type::GetTypeFromProgID()。避免对每个指甲都使用锤子,这不是零概率(总是说为什么)。C++/CLI允许您同样轻松地使用本机类型。所以很简单:
LPCOLESTR progid = L"Matrikon.OPC.Server";
// etc..
您可以简单地使用Type::GetTypeFromProgID()。避免对每个指甲都使用锤子,这不是零概率(总是说为什么)。C++/CLI允许您同样轻松地使用本机类型。所以很简单:
LPCOLESTR progid = L"Matrikon.OPC.Server";
// etc..
您可以简单地使用Type::GetTypeFromProgID()。避免对每个指甲都使用锤子,这不是零概率(总是说为什么)。C++/CLI允许您同样轻松地使用本机类型。所以很简单:
LPCOLESTR progid = L"Matrikon.OPC.Server";
// etc..
非零概率(总是说为什么)可以简单地使用Type::GetTypeFromProgID()。我提出了另一种方法:
// 1.
pin_ptr<const WCHAR> str = PtrToStringChars(progID);
LPCOLESTR coleString = (LPWSTR)str;
另一个例子:
// 3.
pin_ptr<const WCHAR> sclsid3 = PtrToStringChars("{63D5F432-CFE4-11d1-B2C8-0060083BA1FB}");
CLSID clsid3;
CLSIDFromString((WCHAR*)sclsid3, &clsid3); //(LPOLESTR, &CLSID)
//3。
pinptrsclsid3=PtrToStringChars({63D5F432-CFE4-11d1-B2C8-0060083BA1FB});
CLSID-clsid3;
CLSIDFromString((WCHAR*)sclsid3和clsid3)//(LPOLESTR和CLSID)
我没有太多的经验,也不确定是否内存不足,但我认为这些代码是正确的。我用另一种方法:
// 1.
pin_ptr<const WCHAR> str = PtrToStringChars(progID);
LPCOLESTR coleString = (LPWSTR)str;
另一个例子:
// 3.
pin_ptr<const WCHAR> sclsid3 = PtrToStringChars("{63D5F432-CFE4-11d1-B2C8-0060083BA1FB}");
CLSID clsid3;
CLSIDFromString((WCHAR*)sclsid3, &clsid3); //(LPOLESTR, &CLSID)
//3。
pinptrsclsid3=PtrToStringChars({63D5F432-CFE4-11d1-B2C8-0060083BA1FB});
CLSID-clsid3;
CLSIDFromString((WCHAR*)sclsid3和clsid3)//(LPOLESTR和CLSID)
我没有太多的经验,也不确定是否内存不足,但我认为这些代码是正确的。我用另一种方法:
// 1.
pin_ptr<const WCHAR> str = PtrToStringChars(progID);
LPCOLESTR coleString = (LPWSTR)str;
另一个例子:
// 3.
pin_ptr<const WCHAR> sclsid3 = PtrToStringChars("{63D5F432-CFE4-11d1-B2C8-0060083BA1FB}");
CLSID clsid3;
CLSIDFromString((WCHAR*)sclsid3, &clsid3); //(LPOLESTR, &CLSID)
//3。
pinptrsclsid3=PtrToStringChars({63D5F432-CFE4-11d1-B2C8-0060083BA1FB});
CLSID-clsid3;
CLSIDFromString((WCHAR*)sclsid3和clsid3)//(LPOLESTR和CLSID)
我没有太多的经验,也不确定是否内存不足,但我认为这些代码是正确的。我用另一种方法:
// 1.
pin_ptr<const WCHAR> str = PtrToStringChars(progID);
LPCOLESTR coleString = (LPWSTR)str;
另一个例子:
// 3.
pin_ptr<const WCHAR> sclsid3 = PtrToStringChars("{63D5F432-CFE4-11d1-B2C8-0060083BA1FB}");
CLSID clsid3;
CLSIDFromString((WCHAR*)sclsid3, &clsid3); //(LPOLESTR, &CLSID)
//3。
pinptrsclsid3=PtrToStringChars({63D5F432-CFE4-11d1-B2C8-0060083BA1FB});
CLSID-clsid3;
CLSIDFromString((WCHAR*)sclsid3和clsid3)//(LPOLESTR和CLSID)
我没有太多经验,也不确定是否存在内存不足,但我认为这些代码是正确的。我用另一种方法:pin_ptr str=PtrToStringChars(progID);LPCOLESTR coleString=(LPWSTR)str@MarekK请将您的答案作为答案发布。这种技术通过将Unicode转换为ANSI再转换为Unicode来释放数据。我采用了另一种方法:pin_ptr str=PtrToStringChars(progID);LPCOLESTR coleString=(LPWSTR)str@MarekK请将您的答案作为答案发布。这种技术通过将Unicode转换为ANSI再转换为Unicode来释放数据。我采用了另一种方法:pin_ptr str=PtrToStringChars(progID);LPCOLESTR coleString=(LPWSTR)str@MarekK请将您的答案作为答案发布。这种技术通过将Unicode转换为ANSI再转换为Unicode来释放数据。我采用了另一种方法:pin_ptr str=PtrToStringChars(progID);LPCOLESTR coleString=(LPWSTR)str@MarekK请将您的答案作为答案发布。这种技术通过将Unicode转换为ANSI再转换为Unicode来释放数据。是的,但为了简化我的问题,我粘贴了代码的关键部分L“Matrikon.OPC.Server”
将不被使用,并且progID
将是动态的。因此,您的问题与您试图解决的问题不匹配,并且您选择的答案与您解决问题的方式不同。很好,我的问题与问题完全吻合。使用progID变量是有目的的<代码>字符串^progID=Console::ReadLine();CLSID-CLSID;HRESULT result=CLSIDFromProgID(progID,&clsid)代码>这个匹配更好吗?我选择的答案是正确的,但在家里我并没有ATL快递。我会在周一上班的时候检查。我可以检查char*pNewCharStr
是否正确。我在工作中试过ATL,我知道应该正确地进行转换。在此期间,我找到了不同的解决方法,因为我发现OLESTR==WCHAR
。这是真的,但为了简化我的问题,我粘贴了代码的关键部分L“Matrikon.OPC.Server”
将不被使用,并且progID
将是动态的。因此,您的问题与您试图解决的问题不匹配,并且您选择的答案与您解决问题的方式不同。很好,我的问题与问题完全吻合。使用progID变量是有目的的<代码>字符串^progID=Conso