gpt4 book ai didi

c# - 从 C# 函数在 C++ COM dll 中传递字符串

转载 作者:行者123 更新时间:2023-11-28 06:12:02 25 4
gpt4 key购买 nike

dll的函数接口(interface);

我认为 dll 函数看起来像,数据类型为 BSTR

CustomConvert(BSTR dataStr)

{........}

dll接口(interface):

CustomConvert(IntPtr dataStr)    //Returns strings

我需要传递的数据是这样的:

string strTemp = "pŒ®í§…Êtf°B²bßZÃQô"; // something like this
obj.CustomConvert(strTemp);

但我收到异常“string”无法转换为“System.IntPtr”;在网上搜索后,我发现了这样的东西。

obj.CustomConvert(System.Runtime.InteropServices.Marshal.StringToBSTR(strTemp));

但 System.Runtime.InteropServices.Marshal.StringToBSTR(strTemp) 将 strTemp 转换为数字,如 2035295。但我需要在 strTemp 中传递实际值。

有什么帮助或建议吗?

最佳答案

要传递 BSTR,您可以执行以下操作:

public static extern void CustomConvert([MarshalAs(UnmanagedType.BStr)] string dataStr);

然后什么都不做,直接传string

请注意,在 CustomConvert 中,您不能释放 BSTR,因为它由 C#“拥有”。

关于c# - 从 C# 函数在 C++ COM dll 中传递字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065410/

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