您的位置:首页 > 其它

利用VS生成.lib及.dll文件

2017-09-20 18:00 211 查看


利用VS生成.lib及.dll文


.lib文件与.dll文件

.lib文件称作静态链接库,.dll文件称作动态链接库。linux系统下对应的文件为.a文件及.so文件。
Windows平台下c++程序与库的链接有两种方式:静态链接与动态链接。
静态链接只需要.lib文件,此时.lib文件作为静态链接库。打包好的程序只有.exe文件,文件体积较大。
动态链接需要.lib及.dll文件,此时.dll文件作为动态链接库,而.lib文件作为库的入口,被打包到.exe文件中。此时打包好的程序包括.exe文件及.dll文件。
比较这两种方式,显然动态链接更灵活。如果发布的程序需要更新库里的内容,只需要更新对应的dll文件即可,而对其他文件不需要做修改。相反静态链接方式需要更新整个.exe程序,而且会使得.exe文件体积庞大。


如何利用VS2013生成.lib及.dll文件

这里以VS2013为例,生成动态链接库。首先创建一个DLL工程:



添加源文件及头文件:



头文件里定义DLL_API函数(即调用者可以从外部调用的函数):

#ifdef DLL_API
#else
#define DLL_API __declspec(dllexport)
#endif
// 这里以加法为例,其中DLL_API代表可供调用者调用的函数
DLL_API int add(int a, int b);


源文件里实现这个add函数:

#include "dll_test.h"

int add(int a, int b)
{
return a + b;
}


好,现在可以右键工程生成一下,我们可以在Debug文件夹里看到如下文件:



其中.lib文件及.dll文件就是我们打包好的库文件。如果其他工程要调用这个库,需要做的是:
工程包含dll_test.h头文件;
工程包含.lib链接库,作为动态链接库的入口;
将.dll文件与生成的.exe文件放在同一目录下,或者将.dll文件所在目录添加到系统环境变量中并重启计算机。


几点注意

上面的例子只生成了Debug版本的库文件,如需Release版本,需要重新在Release模式下生成一次。
默认的工程依赖VS环境,如果在没有VS环境机器上不能直接运行。解决办法是工程右键-属性-C/C++-代码生成-运行库,改为/MT(Release)或者/MTd(Debug)
如果生成的库依赖其他动态链接库,需要把依赖的.dll文件一同打包发布。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: