dll编程入门(C语言).docx

dll编程入门(C语言).docx

ID:51688168

大小:103.02 KB

页数:7页

时间:2020-03-15

dll编程入门(C语言).docx_第1页
dll编程入门(C语言).docx_第2页
dll编程入门(C语言).docx_第3页
dll编程入门(C语言).docx_第4页
dll编程入门(C语言).docx_第5页
资源描述:

《dll编程入门(C语言).docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C++下的DLL编程入门一、编写第一个入门级dll文件1.新建一个dlltest的dll工程,加入一源文件dlltest.cpp,包含add和subtract两个函数如下:_declspec(dllexport)intadd(inta,intb){returna+b;}_declspec(dllexport)intsubtract(inta,intb){returna-b;}//----------------------------------------------------------------注意:在函数名前加上_declspec(dllexport)

2、,这样编译后在连接的时候才会生成dlltest.lib(引入库文件)和dlltest.exp(输出库文件),并且在命令提示符下用dumpbin命令可以看到导出了哪些函数。方法:在命令提示符下,转到dll文件所在目录下,输入dumpbin–exportsdlltest.dll,列出导出函数如下:这里注意到函数名字已经被改成了?add@@YAHHH@Z,这种现象叫做名字粉碎,是为了支持函数重载而做的。2.编写一个基于对话框的MFC程序测试DLL,工程名为calldll,放置两个按纽add和subtract,响应按纽消息,调用这个DLL的add和subtract函数。先

3、添加响应按钮消息的函数OnAdd和OnSubtract,然后在函数所在源文件中写完整函数体如下://externintadd(int,int);//externintsubtract(int,int);_declspec(dllimport)intadd(int,int);_declspec(dllimport)intsubtract(int,int);voidCCalldllDlg::OnAdd(){//TODO:AddyourcontrolnotificationhandlercodehereCStringstr;str.Format("2+3=%d",add

4、(2,3));MessageBox(str);}voidCCalldllDlg::OnSubtract(){//TODO:AddyourcontrolnotificationhandlercodehereCStringstr;str.Format("3-2=%d",subtract(3,2));MessageBox(str);}//------------------------------------------------------------这里采用隐式链接的方式加载动态链接库:注意:要用关键字extern先声明这两个函数,表明这两个函数是在外部定义的(不

5、过程序中将它注释掉了)。最好是用_declspec(dllimport)表明函数是从动态链接库的lib文件中引入的,这样效率更高。将文件dlltest.lib拷贝到此工程目录下,并在ProjectSettings的Link标签下添加此文件:(否则编译会成功,但连接时会出错提示找不到函数的定义)编译连接生成calldll.exe,这时用Dumpbin-importscalldll.exe查看它的输入信息,可以看到它加载了dlltest.dll。运行calldll.exe(要成功运行还需将dlltest.dll拷贝到工程目录或此exe所在目录下)这样,最简单的第一个d

6、ll就完成了。一、编写涉及到类和头文件的dll文件1.新建一个dlltest的dll工程,加入一头文件dlltest.h和一源文件dlltest.cpp。dlltest.h:#ifdefDLL_API#else#defineDLL_API_declspec(dllimport)#endifDLL_APIintadd(int,int);DLL_APIintsubtract(int,int);classDLL_APIPoint1//将整个类导出{public:voidoutput(intx,inty);voidoutput1(intx,inty);};classPoi

7、nt2{public:DLL_APIvoidoutput(intx,inty);//仅导出类中的一个函数voidoutput1(intx,inty);};//----------------------------------------------------dlltest.cpp:#defineDLL_API_declspec(dllexport)#include"dlltest.h"#include#includeintadd(inta,intb){returna+b;}intsubtract(inta,intb){r

8、eturn

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。