P /从非托管代码调用BSTR

时间:2011-05-23 01:40:11

标签: .net vb.net pinvoke

非托管函数的VB签名应该是什么 void PopulateBSTR(BSTR outstring)?

PopulateBSTR函数执行SysAllocString并填充字符串。注意,unmanagaed签名的参数是BSTR而不是BSTR *。当C ++签名以BSTR *作为参数时,我可以使用IntPtr签名封送BSTR字符串。

(非托管代码是外部dll,我无法修改但我需要使用。)

2 个答案:

答案 0 :(得分:0)

查看PInvoke.net,您似乎需要使用MarshallAs Attribute表示应将其视为BSTR

答案 1 :(得分:0)

需要在CharSet = CharSet.Unicode的属性列表中指定dllimport。将其捕获为StringBuilder而不是字符串类。