VC++ 静态库&动态库的创建与调用
来源:互联网 发布:淘宝客推广券 编辑:程序博客网 时间:2024/05/21 19:35
1.静态库的创建与调用
创建Win32 Static Library工程
在工程中添加静态库的头文件(StaticLib.h)与实现文件(StaticLib.cpp)
如下图:
编译链接后,此时我们的静态库文件已经生成了
打开当前工程下Debug文件夹,会发现StaticLib.lib(静态库文件)
如其他人需要你的静态库时,你只需要将.h文件与.lib文件提供即可
接下来我们调用静态库
创建空的 Win32 Console Application 工程
//调用静态库的方法有多种,此处介绍一种常用&简单的方法
工程创建好后,首先将上述的.h与.lib文件拷贝到当前工程下(此时工程为调用静态库的工程)
//添加CallStaticLib.cpp调用静态库
结果如下:
2.动态库的创建与调用
使用动态库的时候,需要提供两个文件:引入库文件(.lib)和DLL(.dll)文件
创建空的 Win32 Dynamic~Link Liarary工程
添加DynamicLib.cpp 用来创建动态库//注意动态库一定要导出_declspec(dllexport)
编译链接在当前工程下查看Debug文件夹发现
为什么只有DLL文件而没有引入库文件??
那是因为我们没有导出那俩个函数,接下来介绍如何查看函数是否导出
查看导出:
没加_declspec(dllexport)
1.利用VC6自带工具Depends
2.用命令行输出
2.1 首先进入安装VC路径下的VC98的Bin目录(由于编者VC安装在C盘)
2.2 运行dumpbin命令
2.3 执行以下命令查看动态库
上述方法在动态库文件中没有发现我们的Mul与Dev函数.
现在修改一下DynamicLib.cpp内容,再次编译链接
同样用上述方法执行一遍发现:
加上_declspec(dllexport)后
1.VC自带工具Depends
2. 命令行(cmd)
这是说明我们的函数被导出了.
我们进入到当前工程的Debug目录下发现DLL文件与LIB文件
此时我们的动态库文件建立完成了,用户需要调用Mul与Dev时,我们提供DynamicLib.dll & DynamicLib.lib即可
接下来调用动态库(调用动态库的方法也有多种,此处介绍一种较常见 & 简单的方法)
创建空的Win32 Console Applicatuon工程
1. 将DynamicLib.dll & DynamicLib.lib拷贝到当前工程下
2. Project -> Settings 选择调用动态库的工程 -> Link -> 添加DynamicLib.lib
添加CallDynamicLib.cpp
运行结果如下:
到此为止静态库与动态库都使用了,但是动态库中还需要补充一点问题
_declspec(dllexport)与_declspec(dllimport)
如果上面仔细的朋友会发现 我用extern导入的Mul与Dev,其实用_declspec(dllimport)更好一点
主要区别在如果导出的是类的静态成员,尽量使用_declspec(dllimport)
那么我们就用这种方法实现一下吧
第一步:建立动态库工程,导出时就需要定义头文件Dll.h
第二步:实现Dll.cpp
第三步:拷贝Dll.h Dll.cpp Dll.lib(同样在Link中添加进去)
第四步:新建工程调用动态库
运行结果:
静态库:
编译链接可执行文件时,链接器从库中复制这些函数和数据到可执行文件中,发布产品时
只需要发布这个可执行文件,并不需要发布使用了的静态库
动态库:
编译链接可执行文件时,只需要链接该DLL的引入库文件,该DLL中的函数代码和数据并
不复制到可执行文件中,直到可执行文件运行时才去加载所需的DLL,将该DLL映射到进程的地址空间中,
然后访问DLL中导出的函数,在发布产品时,除了可执行程序以外,同时还要发布该程序将要调用的动态链接库。
- VC++ 静态库&动态库的创建与调用
- VC静态链接库与动态链接库的区别,创建及调用
- VC++动态库和静态库创建与使用
- VC++动态库和静态库创建与使用
- C++静态库与动态库、创建及调用方法
- 创建和调用动态链接库与静态链接库
- VC++ 6.0如何创建与调用动态链接库
- VC++ 6.0如何创建与调用动态链接库
- VC++如何创建与调用动态链接库
- VC++ 6.0如何创建与调用动态链接库
- VC++6.0如何创建与调用动态链接库(dll)
- VC++ 6.0如何创建与调用动态链接库
- VC++6.0如何创建与调用动态链接库(dll)
- 动态库与静态库的创建
- VC++:创建,调用Win32静态链接库
- VC++6.0 动态库的创建与调用(非MFC的dll)
- 库的静态和动态调用以及创建
- Delphi中如何调用VC++创建的动态链接库
- AIX下做定时任务注意事项
- box2d学习之一鼠标关节及查询AABB
- HDU 1534 Schedule Problem 差分约束
- unity消息机制实现
- 2013 长沙邀请赛 HDU 4571 Travel in time(dp)
- VC++ 静态库&动态库的创建与调用
- linux下各个文件夹的作用
- nmon和nmonanalser的下载和使用注意事项
- asp.net获取当前时间
- 硬币水题II(概率)
- 恶作剧:被乔布斯整蛊也很快乐
- 10001 - Garden of Eden(dfs)
- malloc/free和new/delete的区别
- LDAP基础知识整理