关于如何从LPCOLESTR制作BSTR的任何想法?愚蠢的事情要挂掉......

有帮助吗?

解决方案

LPCOLESTR只是const wchar_t*,因此您可以使用 SysAllocString() 创建BSTR

LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);

请务必致电 SysFreeString() 用你的<=>完成。另请参阅关于<=> s的MSDN文档

其他提示

BSTR和LPCOLESTR之间的区别在于BSTR在字符串前面加上字符串的长度,LPCOLESTR没有。

BSTR不一定有一个结尾的\ 0标记字符串结尾,因为字符串的长度是前缀,转换我通常使用类CComBSTR(atlcomcli.h),ctor采用BSTR或LPCOLESTR作为参数和成员BSTR()来获取BSTR表示:

CComBSTR b( yourolestring )
// b.BSTR()

CComBSTR将处理分配/释放,因此没有内存泄漏的风险。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top