簡體   English   中英

從C#函數在C ++ COM dll中傳遞字符串

[英]Pass String in C++ COM dll from C# function

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#所“擁有”的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM