将LPWST转换或转换为BSTR

如何将LPWSTR转换为BSTR? LPWSTR是WCHAR *而BSTR是OLECHAR *,OLECHAR又是WCHARtypes,简单的types转换就可以工作? 或者我们需要做一些额外的努力? 它显示错误的转换错误/警告。

你这样做

BSTR pBstr = SysAllocString(szWCharString); // do something with the BSTR here ... SysFreeString(pBstr); 

之后你必须记得通过调用SysFreeString来释放用于转换的空间。

BSTR由OLECHAR []和字符串前面的长度信息组成。 BSTR是指向OLECHAR []部分的指针。 但BSTR功能需要长度信息(容量和长度)。

您需要SysAllocString函数来分配整个结构。