vc中使用动态链接库dll

vc中使用动态链接库dll

ID:14324300

大小:62.00 KB

页数:10页

时间:2018-07-27

vc中使用动态链接库dll_第1页
vc中使用动态链接库dll_第2页
vc中使用动态链接库dll_第3页
vc中使用动态链接库dll_第4页
vc中使用动态链接库dll_第5页
资源描述:

《vc中使用动态链接库dll》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VC中使用动态链接库DLL:静态调用和动态调用2010-05-0215:56VC中生成DLL的办法见:www.codeproject.com/KB/DLL/RegDLL.aspx--------------------------------------VC中使用DLLhttp://www.cnblogs.com/c1230v/articles/1401448.html调用DLL有两种方法:静态调用和动态调用.(一).静态调用其步骤如下:1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;2.把你的y

2、ouApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;4.打开你的目标工程选中工程,选择VisualC++的Project主菜单的Settings菜单;5.执行第4步后,VC将会弹出一个对话框,在对话框的多页显示控件中选择Link页。然后在Object/librarymodules输入框中输入:youApp.lib6.选择你的目标工程HeadFiles加入:youApp.h文件;7.最后在你目标工程(*.cpp,需要调用D

3、LL中的函数)中包含你的:#include"youApp.h"注:youApp是你DLL的工程名。(二).动态调用其程序如下:动态调用时只需做静态调用步骤1.01{02HINSTANCEhDllInst=LoadLibrary("youApp.DLL");03if(hDllInst)04{05typedefDWORD(WINAPI*MYFUNC)(DWORD,DWORD);06MYFUNCyouFuntionNameAlias=NULL;07//youFuntionNameAlias函数别名08youFuntionNameAlias=(MYFUNC

4、)GetProcAddress(hDllInst,"youFuntionName");09//youFuntionName在DLL中声明的函数名10if(youFuntionNameAlias)11{12youFuntionNameAlias(param1,param2);13}14FreeLibrary(hDllInst);15}16}显式(静态)调用:LIB+DLL+.H,注意.H中dllexport改为dllimport隐式(动态)调用:DLL+函数原型声明,先LoadLibrary,再GetProcAddress(即找到DLL中函数的地址)

5、,不用后FreeLibrary--------------------------------------动态链接库DLL的链接http://blog.donews.com/mmycly/archive/2006/06/15/917076.aspx应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。VisualC++6.0在VCbin目录下提供了一个名为Dumpbin.exe的小程序,用它可以查看DLL文件中的函数结构。另外,Windows系统将遵循下面的搜索顺序来定位DLL:1

6、.包含EXE文件的目录,2.进程的当前工作目录,3.Windows系统目录,4.Windows目录,5.列在Path环境变量中的一系列目录。(一).隐式链接隐式链接就是在程序开始执行时就将DLL文件加载到应用程序当中。实现隐式链接很容易,只要将导入函数关键字_declspec(dllimport)函数名等写到应用程序相应的头文件中就可以了。下面的例子通过隐式链接调用MyDll.dll库中的Min函数。首先生成一个项目为TestDll,在DllTest.h、DllTest.cpp文件中分别输入如下代码:01//Dlltest.h02#pragmaco

7、mment(lib,"MyDll.lib")03extern"C"_declspec(dllimport)intMax(inta,intb);04extern"C"_declspec(dllimport)intMin(inta,intb);05//TestDll.cpp06#include07#include"Dlltest.h"08voidmain()09{10inta;11a=min(8,10)12printf("比较的结果为%d",a);13}在创建DllTest.exe文件之前,要先将MyDll.dll和MyDll.lib拷贝到当前工程

8、所在的目录下面,也可以拷贝到windows的System目录下。如果DLL使用的是def文件,要删除TestDll.h文件

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

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

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