使用易語言調(diào)用C/C++編寫的DLL動態(tài)庫

linux玩膩了,最近閑來無事想做一個windows軟件玩玩,鑒于高中時期了解到中文編程語言《易語言》,話說易語言易學(xué),簡單,故花了5分鐘重新看了看易語言寫法,樓主秉持著,能先動手絕不bb的優(yōu)良傳統(tǒng),直接上手寫,不懂的東西再百度,事實證明《易語言》真的簡單、易學(xué)、易懂,至于為啥不用C#我保存沉默。

如果有很多功能用易語言不方便實現(xiàn)我們怎么辦呢?又或者易語言的很多操作我們還不會又怎么辦呢?那就用C/C++寫個動態(tài)庫供易語言調(diào)用唄,用熟悉的語言解決問題。

工欲善其事,必先利其器,對于windows編程樓主是個新手,鑒于“Visual Studio”過于龐大,樓主找到了一個輕量級的“Dev-C++”看百度介紹就知道它很輕量級:“Dev-C++是一個Windows環(huán)境下的一個適合于初學(xué)者使用的輕量級 C/C++ 集成開發(fā)環(huán)境(IDE)”。而且還開源,可謂是非常良心了,確實很適合新手使用,給你們感受一下整體界面。

接下來我們就可以開始新建一個DLL項目了:文件->新建->項目->DLL。

選擇好保存位置后,“Dev-C++”會默認生成一個dll工程模板,如下圖所示,直接按CTRL+S保存“dllmain.cpp”和“dll.h”兩個文件。

刪掉默認的HelloWorld,我們自己來寫一個簡單的做加法的函數(shù)。注意:易語言要調(diào)用C/C++的動態(tài)庫需要使用“__stdcall”關(guān)鍵字修飾函數(shù)。

DLLIMPORT int __stdcall add(int a, int b)

{

return a+b;

}

為防止編譯的DLL動態(tài)庫導(dǎo)出的函數(shù)名改變,我們還需要修改“dll.h”中DLLIMPORT宏定義,在“__declspec”之前加上“extern "C"”。

修改前:

修改后:

接下來我們就可以編譯了,按“F12”全部編譯,如果沒有報錯就會生成“test_dll.dll”。

好了我們可以使用易語言開始調(diào)用剛剛寫好的函數(shù)了,先建立一個窗口程序:程序->新建->windows窗口程序->確定。

界面設(shè)計,添加兩個編輯框,和一個按鈕。

鼠標雙擊求和按鈕,會自動跳轉(zhuǎn)到窗口程序集。觸發(fā)條件是“_按鈕1_被單擊”,我們在這里實現(xiàn)dll調(diào)用顯示調(diào)用結(jié)果。

將“test_dll.dll”庫拷貝到易語言工程目錄下,點擊菜單欄上的“插入->DLL命令”,添加上dll的庫文件名及在庫中對應(yīng)命令名,參數(shù)要和C/C++中定義的一樣,比如這里我們將a和b參數(shù)都定義為“整數(shù)型,返回參數(shù)為“整數(shù)型”。

我們回到“窗口程序集”,對我們剛剛添加的dll調(diào)用函數(shù)進行調(diào)用,下面是實現(xiàn)方法,首先將編輯框的內(nèi)容轉(zhuǎn)換為整數(shù),即可調(diào)用“add”函數(shù)。

點擊“運行”按鈕即可彈出窗口程序,我們在編輯框中填入數(shù)字,點擊求和,額。。。。。翻車了????

我們再看看“Dev-C++”中的源碼有沒有問題,無論怎么看都沒發(fā)現(xiàn)任何錯誤,定睛一看編譯器選成了“TDM-GCC 4.9.2 64-bit Release”因為“易語言”默認創(chuàng)建的32位程序,我們只需要將“TDM-GCC 4.9.2 64-bit Release”改為“TDM-GCC 4.9.2 32-bit Release”即可。

按“F12”重新編譯文件,拷貝新編譯的dll文件,到易語言工程目錄再次執(zhí)行,輸入求和的數(shù)據(jù),點擊求和按鈕,即可在調(diào)試窗口看到結(jié)果。

我們再加個信息框,來個彈窗顯示,更加清晰。

最后啰嗦幾句,可能有人會問易語言學(xué)了有啥用,做做小工具,學(xué)著玩唄,不過易語言在外掛界還是負有盛名的,其實國內(nèi)用易語言的愛好者蠻多的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容