visual studio 2010 动态库(dll)的动态引用和静态引用

visual studio 2010 动态库(dll)的动态引用和静态引用

ID:17884917

大小:24.34 KB

页数:4页

时间:2018-09-08

visual studio 2010  动态库(dll)的动态引用和静态引用_第1页
visual studio 2010  动态库(dll)的动态引用和静态引用_第2页
visual studio 2010  动态库(dll)的动态引用和静态引用_第3页
visual studio 2010  动态库(dll)的动态引用和静态引用_第4页
资源描述:

《visual studio 2010 动态库(dll)的动态引用和静态引用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VisualStudio2010DLL动态引用和静态应用的要求:引用方式要求动态引用MyDLL.dll静态引用MyDLL.dll,MyDLL.lib,MyDLL.h静态加载DLL的步骤如下:1.将MyDLL.dll,MyDLL.lib,MyDLL.h拷贝到目标工程(需调用MyDLL.DLL的工程)的Debug目录下。2.配置头文件路径:选择项目->属性->C/C++->常规->附加包含目录:设置头文件路径。3.配置DLL和LIB文件路径:选择项目->属性->连接器->常规->附加库目录:设置DLL和LIB文件路径。4.加载Lib文件:方

2、法一:选择项目->属性->连接器->输入->附加依赖项:输入要加载的Lib文件名(加载多个Lib文件时,以回车为分隔符)。方法二:在程序中使用#pragmacomment(lib,"MyDLL.lib")进行设定。5.配置该应用程序.exe的生成目录要和加载的DLL、LIB放在同一目录:选择项目->属性->连接器->常规->输出文件。6.在目标工程(*.cpp,需要调用DLL中的函数)中加入:#include"MyDLL.h"   动态加载DLL的步骤如下:1.声明头文件,说明要用windows32方法来加载和卸载

3、DLL。例如:#include2.用typedef定义一个函数指针类型,这个指针类型要与调用的DLL引出函数类型和参数保持一致。例如:typedef void(*FUN)(int,int); 1.通过Win32API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄。这里字符串类型是LPSTR,当是unicode字符集的时候会不行,因此要在配置-属性-常规里面把默认字符集“unicode”改成支持多字符扩展即可。例如:const char* dllName = "MyDLL.dll"; HM

4、ODULE hDLL = LoadLibrary(dllName);2.取到的地址要判断返回的句柄是否为空,如果为无效句柄,那么要释放加载DLL所占用的内存。例如:if(hDLL != NULL){}else{FreeLibrary(hdll)}3.定义一个函数指针,用来获取你要用的函数地址,通过GetProcAdress来获取函数的地址,这里也要判断要函数指针是否为空,如果没取到要求的函数,那么要释放句柄。例如:FUNfp = FUN(GetProcAddress(hDLL,funName));  if(fp != NULL)   {

5、  }  4.通过函数指针来调用函数。这里不能用函数名来使用函数,因为这个DLL本身不是当前CPP的一部分,而是通过windows去调用。例如:fp(x,y)5.最后调用结束后,就释放句柄。例如:FreeLibrary(hdll)要点·包含头文件Windows.h,原因在于程序中用到了LoadLibrary、FreeLibrary、GetProcAddress等Win32API函数。·FUNA和FUNB是函数指针类型的声明。·当程序不再使用dll时,应该调用FreeLibrary及时释放它占用的内存空间。·如果在constchar*dl

6、lName和funName底部出现红色波浪线提示,说明采用的字符集不匹配,需要修改项目UseDLL的属性CharaterSet为NotSet。·为方便项目的调试,建议修改解决方案的StartupProject属性为Singlestartupproject并以UseDLL为首选。以具体实例说明动态加载DLLMyDLL.h文件为:1.#ifdef MyDLL_EXPORTS  2.#define MyDLL_API __declspec(dllexport)  3.#else  4.#define MyDLL_API __declspec(

7、dllimport)  5.#endif  6.  7.MyLL_API void Add(int,int);    修改MyDLL.cpp文件为: 1.MyDLL_API void Add(int a,int b)  2.{  3.   returna+b;4.}  使用DLL的代码:1.#include  2.typedef void(*FUN)(int,int);  3.int main()  4.{  5.    const char* dllName = "MyDLL.dll";  6.    const

8、 char* funName = "Add";  7.    int x(100), y(100);  8.    HMODULE hDLL = LoadLibrary(dllName);  9.    i

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

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

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