C# 如何访问存储在VC++;BSTR

C# 如何访问存储在VC++;BSTR,c#,c++11,C#,C++11,我有一个C#应用程序,我从中向基于COM的dll请求一个映像,映像将以字符串形式返回给C#应用程序 实际上,在COM dll中,它返回BSTR中的二进制信息。如何将其存储到BMP中 我尝试了System.Text.Encoding.UTF8.GetBytes(string),但确实有失真的图像。BSTR数据实际上是UCS-2格式,而不是UTF8格式,因此您可能希望尝试使用Unicode编码而不是UTF8。在.NET中,Unicode编码实际上意味着UTF16,但除了需要超过16位的字符编码之外,

我有一个C#应用程序,我从中向基于COM的dll请求一个映像,映像将以字符串形式返回给C#应用程序

实际上,在COM dll中,它返回BSTR中的二进制信息。如何将其存储到BMP中


我尝试了
System.Text.Encoding.UTF8.GetBytes(string)
,但确实有失真的图像。

BSTR数据实际上是UCS-2格式,而不是UTF8格式,因此您可能希望尝试使用Unicode编码而不是UTF8。在.NET中,Unicode编码实际上意味着UTF16,但除了需要超过16位的字符编码之外,这与UCS-2相同


当然,这可能不起作用,这取决于COM DLL究竟是如何编码图像数据的。

C++在哪里进入这个?COM DLL是在VC++上构建的,这就是为什么我提到C++的原因。抱歉,我没有使用Clear。我尝试了System.Text.Encoding.Unicode.GetBytes()来获取UTF16,但没有成功。在VB6.0中,如果我尝试从COM dll访问相同的图像信息。我只需要访问这个BSTR值并将其写入一个文件。它工作得非常好。请多指点我能做什么。