91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么創建動態庫C#調用

發布時間:2021-06-24 15:58:50 來源:億速云 閱讀:273 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關C++中怎么創建動態庫C#調用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

C++動態庫的修改

首先還是打開Cppdll.h的頭文件,我們在頭文件中定義一個回調函數

typedef int(*cb)(int, int);

然后在聲明的導出函數中加入調用的這個cb指針

extern "C" int Cppdll_API call_func(cb callback, int a, int b);

如下圖

C++中怎么創建動態庫C#調用

接著我們再在Cppdll.cpp的源文件中寫call_func的實現方法,方法也很簡單,就是先求出輸入的兩個int類型的數值的和與差,然后把這兩個值再做為回調參數的值傳回去。

int Cppdll_API call_func(cb callback, int a, int b)
{
    int c = AddCount(a, b);
    int d = abs(a - b);
    return callback(c, d);
}

C++中怎么創建動態庫C#調用

這樣C++的動態庫我們就已經完成了


C#的調用程序的修改

先寫C++動態庫的調用函數聲明

        [DllImport("Cppdll", EntryPoint = "call_func",
            CallingConvention = CallingConvention.StdCall)]

        public static extern int CallFun(Dllcallback dcb, int num1, int num2);

        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]

        public delegate int Dllcallback(int num1, int num2);

上面的Dllcallback是我們定義的回調函數,這里必須用委托的方式定義,下面的【UnmanagedFunctionPointer里的CallingConvention.Cdecl】這個是必須要寫上的,因為默認C++的指針都是Cdecl,如果這里不聲明后調用時會默認_stdcall,在動態調用dll函數的時候,提示Run-Time Check Failure #0 -The value of ESP was not properly saved across a function call.

C++中怎么創建動態庫C#調用

然后我們寫一個回調的方法

        public int Call(int a, int b)
        {
            textBox1.AppendText("回調函數第一個參數為:" + a + "\r\n");
            textBox1.AppendText("回調函數第二個參數為:" + b + "\r\n");
            return a + b;
        }

C++中怎么創建動態庫C#調用

最后在原來的按鈕事件最后接著寫調用C++動態庫的這個實現方法

textBox1.AppendText("調用C++動態庫call_func回調函數\r\n");
num = CallFun(Call, num1, num2);
textBox1.AppendText("得到兩個數相加:" + num + "\r\n");

C++中怎么創建動態庫C#調用

到這里C#調用程序的修改也已經完成了


運行一下程序看看效果

C++中怎么創建動態庫C#調用

上述就是小編為大家分享的C++中怎么創建動態庫C#調用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

武平县| 顺义区| 平安县| 莫力| 长岭县| 新巴尔虎左旗| 怀柔区| 麟游县| 彰武县| 阳高县| 灵台县| 内黄县| 汪清县| 五峰| 宜阳县| 左云县| 温宿县| 尉氏县| 孝义市| 广汉市| 苗栗县| 仙居县| 襄城县| 日土县| 湖州市| 泸西县| 黄浦区| 利辛县| 舒城县| 星子县| 闵行区| 淳安县| 新巴尔虎左旗| 昌乐县| 布尔津县| 新民市| 卓资县| 米脂县| 济南市| 杭州市| 无极县|