簡體   English   中英

C# 從 c++ function 獲取字符串/字符值,它返回字符指針

[英]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.

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