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&#34 ;; 在互联网上搜索后,我发现了类似的东西。
obj.CustomConvert(System.Runtime.InteropServices.Marshal.StringToBSTR(strTemp));
但System.Runtime.InteropServices.Marshal.StringToBSTR(strTemp)将strTemp转换为数字,如2035295.但我需要在strTemp中传递实际值。
任何帮助或建议?
答案 0 :(得分:1)
要传递BSTR
,您可以执行以下操作:
public static extern void CustomConvert([MarshalAs(UnmanagedType.BStr)] string dataStr);
然后直接传递string
而不做任何事情。
请注意,在CustomConvert
中,您不得释放BSTR
,因为它是由C#“拥有”的。