静态库对函数的链接是在编译时期完成的,程序运行时与函数库无联系,移植方便,缺点就是浪费空间和资源。而对于动态库,编译时,不会被链接到目标代码中,在程序运行时,才会载入。动态库在内存中只拷贝一份,节约了空间。
还得说明的是,在链接时,不管是动态库还是静态库其实都有.lib文件。对于静态库来说,.lib包含了函数声明和定义,而动态库的.lib是声明,.dll才是定义。
接下来说明lib和dll的使用
使用lib库的方法
首先,在Visual Studio中"项目上右击->属性->连接器->常规->附加库目录"写上.lib库所在文件夹
附加库目录lib文件夹下内容图:
可以看到,里面全部是lib文件。
然后在 "项目->属性->连接器->输入->附加依赖项"中写上.lib库的名称。
测试一下:首先只加载了opencv的lib,没有加入桌面上库的.lib
运行结果:可以看到报错了
然后我们把目录中的.lib名称复制过来
再运行,成功了。
还有一种情况,在解决方案里A,B两个工程,B工程生成.lib库给A工程用,那么就右键A工程"引用->通用属性->框架和引用->添加新引用"选择B工程即可。
这里扩充一下,在添加.lib名字时,如果文件较多,则可以如下:
首先新建一个帅选器:
在帅选器中,把所有的lib拉进来。
还有一种方法:我们在.lib目录下,新建一个cmd.bat。然后输入 dir ,里面显示了所有的.lib
然后在上面右键标记,选中所有lib,按下回车键 ,然后粘贴到附加依赖项。
使用DLL方法:
一种笨方法,将需要的dll文件复制到工程文件。
其他方法参考其他网站