使用易语言调用C/C++编写的DLL动态库

时间:2024-03-19 08:43:23

使用易语言调用C/C++编写的DLL动态库

打开DEV C++

 

使用易语言调用C/C++编写的DLL动态库

接下来我们就可以开始新建一个DLL项目了:文件->新建->项目->DLL。

使用易语言调用C/C++编写的DLL动态库

 

选择好保存位置后,“Dev-C++”会默认生成一个dll工程模板,如下图所示,直接按CTRL+S保存“dllmain.cpp”和“dll.h”两个文件。

使用易语言调用C/C++编写的DLL动态库

 

 

删掉默认的HelloWorld,我们自己来写一个简单的做加法的函数。注意:易语言要调用C/C++的动态库需要使用“__stdcall”关键字修饰函数。

DLLIMPORT int __stdcall add(int a, int b)

{

return a+b;

}

使用易语言调用C/C++编写的DLL动态库

 

为防止编译的DLL动态库导出的函数名改变,我们还需要修改“dll.h”中DLLIMPORT宏定义,在“__declspec”之前加上“extern "C"”。

修改前:

使用易语言调用C/C++编写的DLL动态库

 

修改后:

使用易语言调用C/C++编写的DLL动态库

接下来我们就可以编译了,按“F12”全部编译,如果没有报错就会生成“test_dll.dll”。

 

使用易语言调用C/C++编写的DLL动态库

好了我们可以使用易语言开始调用刚刚写好的函数了,先建立一个窗口程序:程序->新建->windows窗口程序->确定。

使用易语言调用C/C++编写的DLL动态库

 

界面设计,添加两个编辑框,和一个按钮。

使用易语言调用C/C++编写的DLL动态库

 

鼠标双击求和按钮,会自动跳转到窗口程序集。触发条件是“_按钮1_被单击”,我们在这里实现dll调用显示调用结果。

使用易语言调用C/C++编写的DLL动态库

将“test_dll.dll”库拷贝到易语言工程目录下,点击菜单栏上的“插入->DLL命令”,添加上dll的库文件名及在库中对应命令名,参数要和C/C++中定义的一样,比如这里我们将a和b参数都定义为“整数型,返回参数为“整数型”。

使用易语言调用C/C++编写的DLL动态库

使用易语言调用C/C++编写的DLL动态库

 

我们回到“窗口程序集”,对我们刚刚添加的dll调用函数进行调用,下面是实现方法,首先将编辑框的内容转换为整数,即可调用“add”函数。

使用易语言调用C/C++编写的DLL动态库

 

点击“运行”按钮即可弹出窗口程序,我们在编辑框中填入数字,点击求和,额。。。。。翻车了????

使用易语言调用C/C++编写的DLL动态库使用易语言调用C/C++编写的DLL动态库

 

我们再看看“Dev-C++”中的源码有没有问题,无论怎么看都没发现任何错误,定睛一看编译器选成了“TDM-GCC 4.9.2 64-bit Release”因为“易语言”默认创建的32位程序,我们只需要将“TDM-GCC 4.9.2 64-bit Release”改为“TDM-GCC 4.9.2 32-bit Release”即可。

使用易语言调用C/C++编写的DLL动态库

 

使用易语言调用C/C++编写的DLL动态库

按“F12”重新编译文件,拷贝新编译的dll文件,到易语言工程目录再次执行,输入求和的数据,点击求和按钮,即可在调试窗口看到结果。

使用易语言调用C/C++编写的DLL动态库

我们再加个信息框,来个弹窗显示,更加清晰。

使用易语言调用C/C++编写的DLL动态库

文章来源 :WIFI物联网

学习交流QQ859071398