1、静态库:
静态库封装时,我发现我不能够在我的静态库中使用其他的静态库,比如opencv。具体我不知道为什么不可以。 因为是静态库,在配置属性的时候,没有链接这一步,所以,也就没有链接器这个选项。 不要点击运行,因为,根本就运行不了! 生成就可以看到生成的lib文件, 然后将lib文件和用到的.h文件拷贝过去就行了,不需要.cpp文件。 在引用的工程中配置一下库目录和包含目录就行了。 多扯一句:
我记得看过一个博客,说的意思是,当我们配置属性表的时候,尽可能的使用 "附加包含目录" "附加库目录"
好像说的意思就是:编译器在寻找这些目录的时候,首先看的是带 "附加" 属性的目录,然后,再是VC++目录下的包含目录,库目录
具体在哪我给各位老爷截个图:
附加包含目录: 附加库目录: 其他的附加依赖项正常配置就行了。
特点:
- 后面如果有可执行文件,生成的可执行文件会很大。
- 不利于扩展,如果想修改静态库中某个函数,那么需要重新编译可执行文件。
- 依赖的项会比较少。
- 静态库复杂度会比较低
- 静态库速度会比较快。
2、动态库:
动态库可就厉害了,我发现,我可以在动态库里使用其他的库函数。我就在里面使用了opencv库。 动态库的属性页面: 链接器什么的都有,正常配置opencv 就可以使用了。 然后这里有个点需要注意一下: 在使用的时候,将头文件静态文件放到使用工程目录下。然后,参照opencv配置一下库目录和包含目录就可以了。但是动态库这个有个小地方要注意: 这个dll一定要放到你的运行目录下! 我的是X64/Debug/ 如果你不这么操作,会报dll缺失的错误。 特点:
- 后面的可执行文件体积较小。
- 比较方便更新维护,如果想要修改函数,直接编译一下动态库,将动态库更新到引用的程序中就可以了。
- 生成的可执行程序完全依赖于动态库,如果动态库缺失,程序运行会报错。
- 复杂度比较高。
- 运行速度较静态库比较慢。
参考链接: 知乎 CSDN
祝君程序没BUG,吃嘛嘛香!
|