C# 調用 Qt Dll 返回 int 和const char *

寫了兩個函數接口, 一個返回int, 另一個返回const char *字符串

dll方法返回const char * 時, c# 程序使用IntPtr類型聲明, 不然會亂碼

Qt dll 接口函數定義:

main.cpp

extern "C" __declspec(dllexport) int add(int numberA, int numberB)
{
    return numberA + numberB;
}

extern "C" _declspec(dllexport) const char *sayHi()
{
    //這裏可以定義中文
	const char * s = "Hi";
	return s;
}

C#調用

    [DllImport("qtdialog.dll", EntryPoint = "add",  CallingConvention = CallingConvention.Cdecl)]
    public static extern int add(int numberA, int numberB);

    [DllImport("dll.dll", EntryPoint = "sayHi", CallingConvention = CallingConvention.Cdecl)]
    public static extern IntPtr sayHi();

    private void buttonAdd_Click(object sender, RoutedEventArgs e)
        {
            int getAddValue = add(1, 2);

            // 接收到的字符串需要轉成ASCII
            IntPtr temp = sayHi();
            string str = Marshal.PtrToStringAnsi(temp).Trim();
        }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章