[英]C# get string/characters value from c++ function which return char pointer
我有一個用 C++ 編寫的 DLL。 此 DLL 的 function 類似於以下代碼:
C++ 代碼:
char _H *GetPalette() {
-------Functions body
-------Functions body
return pPaletteString;
}
現在我想從 C# 代碼中的 GetPalette() function 獲取托盤字符串。
我怎么能從那個 function 得到字符串? 我在 C# 代碼中試過這個。 但無法得到正確的結果。
C# 代碼:
[DllImport("cl.dll", EntryPoint = "GetPalette@0", CallingConvention = CallingConvention.StdCall)]
private static extern IntPtr libGetPalette();
public IntPtr GetPalette()
{
return libGetPalette();
}
最后我想得到這樣的字符串
IntPtr result;
result = imgProcess.GetPallet();
string pallet;
pallet = Marshal.PtrToStringAnsi(result);
MessageBox.Show(pallet);
此代碼無法正常工作。 有人可以幫助我嗎,我怎樣才能從我的 C++ DLL function 中獲取字符串值?
謝謝
沙赫里亞爾
您已經告訴 C# 調用約定是__stdcall
但沒有證據表明 function 本身上有__stdcall
標記。 此外, char*
可以是 UTF-8。
您可以使用字符串返回類型在 C# 代碼中定義您的 C++ function 代碼。
[DllImport("cl.dll")]
private static extern string GetPalette();
而不是簡單地從您的 C# 代碼中調用它。
string palette = GetPalette();
在DllImport
屬性中,您可能需要設置正確的調用約定CallingConvention
和字符編碼CharSet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.