自己封装动态库静态库碰到的问题汇总

1、静态库:

静态库封装时,我发现我不能够在我的静态库中使用其他的静态库,比如opencv。具体我不知道为什么不可以。
因为是静态库,在配置属性的时候,没有链接这一步,所以,也就没有链接器这个选项。

不要点击运行,因为,根本就运行不了!
生成就可以看到生成的lib文件,
然后将lib文件和用到的.h文件拷贝过去就行了,不需要.cpp文件。
在引用的工程中配置一下库目录和包含目录就行了。
多扯一句:

我记得看过一个博客,说的意思是,当我们配置属性表的时候,尽可能的使用 "附加包含目录"  "附加库目录" 
好像说的意思就是:编译器在寻找这些目录的时候,首先看的是带 "附加" 属性的目录,然后,再是VC++目录下的包含目录,库目录
具体在哪我给各位老爷截个图:

附加包含目录:

附加库目录:

其他的附加依赖项正常配置就行了。

特点:

  • 后面如果有可执行文件,生成的可执行文件会很大。
  • 不利于扩展,如果想修改静态库中某个函数,那么需要重新编译可执行文件。
  • 依赖的项会比较少。
  • 静态库复杂度会比较低
  • 静态库速度会比较快。

2、动态库:

动态库可就厉害了,我发现,我可以在动态库里使用其他的库函数。我就在里面使用了opencv库。
动态库的属性页面:

链接器什么的都有,正常配置opencv 就可以使用了。
然后这里有个点需要注意一下:
在使用的时候,将头文件静态文件放到使用工程目录下。然后,参照opencv配置一下库目录和包含目录就可以了。但是动态库这个有个小地方要注意:
这个dll一定要放到你的运行目录下!
我的是X64/Debug/
如果你不这么操作,会报dll缺失的错误。
特点:

  • 后面的可执行文件体积较小。
  • 比较方便更新维护,如果想要修改函数,直接编译一下动态库,将动态库更新到引用的程序中就可以了。
  • 生成的可执行程序完全依赖于动态库,如果动态库缺失,程序运行会报错。
  • 复杂度比较高。
  • 运行速度较静态库比较慢。

参考链接:
知乎
CSDN

祝君程序没BUG,吃嘛嘛香!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月21日
下一篇 2022年5月21日

相关推荐