静态库链接的问题

jiandingzhe 2013-10-18 09:14:18
我有两个库Foo和Bar,都是静态库。Bar用了Foo中的一些函数。那么在创建Bar的时候,我应当把Foo链接进去吗?
...全文
224 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpcads 2013-10-28
  • 打赏
  • 举报
回复
取決於Bar庫裡是否有Foo庫對應函數的完整代碼,也就是Bar是否是由Foo庫靜態連接生成的。
绿皮蛙 2013-10-28
  • 打赏
  • 举报
回复
编译是不需要的 打成静态库只不过是把所有的点o文件打包到一起
jiandingzhe 2013-10-27
  • 打赏
  • 举报
回复
引用 10 楼 baita96 的回复:
我理解楼主的意思,在调用静态库的时候,只用一个Bar库,不再单独提供Foo库(Foo库包含在Bar库里面)。 是这个意思吗? 如果是这个意思,的确有很简单的方法可以实现。
不是,依然用两个。 但是即使用两个,也报找不到函数实现的错误,除非我创建Bar的时候把Foo连接进去。
baita96 2013-10-27
  • 打赏
  • 举报
回复
我理解楼主的意思,在调用静态库的时候,只用一个Bar库,不再单独提供Foo库(Foo库包含在Bar库里面)。 是这个意思吗? 如果是这个意思,的确有很简单的方法可以实现。
  • 打赏
  • 举报
回复
我有两个库Foo和Bar,都是静态库。Bar用了Foo中的一些函数。那么在创建Bar的时候,我应当把Foo链接进去吗? 楼主不好意思,6楼的我的回复是针对你生成可执行文件里的情况。 如果Foo和Bar都是静态库的话,首先所谓的静态库只不是目标文件的打包,而目标文件仅仅是用源码文件编译一下生成的,并不经过链接过程。所以请楼主注意,创建Bar,是创建一个静态库,仅仅包含编译过程,而不包含链接过程,楼主千万不要迷糊了哈。。。。 ,在生成可执行文件的时候,才需要链接。。。。
baita96 2013-10-27
  • 打赏
  • 举报
回复
以前没有注意到楼主的这个问题,但我用的是VC,楼主用的是gcc,没法再给楼主提供意见了。
水平不流 2013-10-26
  • 打赏
  • 举报
回复
不懂,学习一下。不过链接应该是需要的~,gcc在编译的时候,还需要-l选项来指定。
jiandingzhe 2013-10-26
  • 打赏
  • 举报
回复
引用 7 楼 lilinandlilin 的回复:
lib加到工程中就行了 配置下
我用的不是VS
  • 打赏
  • 举报
回复
既然都是静态库了肯定要链接进去呀!!
jiandingzhe 2013-10-20
  • 打赏
  • 举报
回复
引用 4 楼 max_min_ 的回复:
库的话!不需要Foo库
我也记的是不需要。但是为啥不链接Foo到Bar,我在链接一个可执行程序target的时候,就找不到Foo里面的函数实现。 我确定给那个target链接了Foo和Bar:

# Cmake文件
add_library(Bar ......)
target_link_libraries(Bar Foo) # 不加这个就不行

target_link_libraries(target Foo Bar) # 或者因为链接的库有顺序要求?
lilinandlilin 2013-10-20
  • 打赏
  • 举报
回复
lib加到工程中就行了 配置下
max_min_ 2013-10-18
  • 打赏
  • 举报
回复
库的话!不需要Foo库
jason_qu2004 2013-10-18
  • 打赏
  • 举报
回复
把静态库.lib文件加载到工程中
Carl_CCC 2013-10-18
  • 打赏
  • 举报
回复
编译成库是不需要的。
hrwu 2013-10-18
  • 打赏
  • 举报
回复
不懂啊!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧