gpt4 book ai didi

C# - 从 BSTR 获取字符串 *

转载 作者:行者123 更新时间:2023-11-30 14:55:08 26 4
gpt4 key购买 nike

在我正在处理的 c# 应用程序中,我正在使用 API 来提取客户信息,并试图获取用户电子邮件地址的字符串 - API 文档指出我可以在要提取的对象上调用以下内容返回一个注释域字符串(电子邮件地址只能从此函数获取/设置)

HRESULT NoteField( [in] BSTR bstrFieldName, [out, retval] BSTR *pNoteField);

然而,当我在 C# 中调用它时,我得到一个空字符串

string email = object.NoteField["Email"]

我怎样才能获得值(value)?

最佳答案

非托管 BSTR* 和托管 string 不是一回事。您需要在两者之间进行转换。

Marshal.PtrToStringBSTRMarshal.StringToBSTR应该做你需要的。类似的东西:

IntPtr inPtr = Marshal.StringToBSTR("Email");
IntPtr outPtr = object.NoteField[inPtr];
// or you may need to do this
// IntPtr outPtr;
// object.NoteField(inPtr, out outPtr);

string email = Marshal.PtrToStringBSTR(outPtr);
Marshal.FreeBSTR(inPtr);
Marshal.FreeBSTR(outPtr);

关于C# - 从 BSTR 获取字符串 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com