dll功能接口;

我认为在dll函数中,数据类型为BSTR

CustomConvert(BSTR dataStr)

{........}


dll介面:

CustomConvert(IntPtr dataStr)    //Returns strings


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

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


但我收到异常“字符串”无法转换为“ 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#所“拥有”的。

07-28 04:33