c#調用c++開發的dll const char* 返回值接收問題


用c#調用視頻接口相關的dll,dll使用c++開發。

c++接口定義如下:

PLATFORM const char* Plat_GetValueStr(const char* propertyName, int iUserHandle);

 

c#接口定義如下:

[DllImport(@"Platform.dll", EntryPoint = "Plat_GetValueStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        extern static IntPtr Plat_GetValueStr(string propertyName, int iUserHandle);

 

遇到的問題及解決方法:

1、在c#調用時一開始 CharSet = CharSet.Ansi 沒有定義 出現過亂碼。c++中的編碼為ansi,c#默認可能是Unicode。這里需要注意一下。

2、對於c++ 返回值類型為  const char* 我一開始用String 接收,在framework4.0下也成功過,但有時成功,有時失敗。在framework2.0下,從來沒成功過。后來改用指針接收,成功接收了。

IntPtr ipName = Plat_GetValueStr(ConstControlUnit.ControlUnitName, iUserHandle);
ResName= Marshal.PtrToStringAnsi(ipName);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM