静态库 链接 静态库 的问题

min2max 2011-05-13 05:20:08
我在这里看到多年以前有人提过这个问题:

有一个静态库工程,我添加了另一个静态库B到此工程中,编译链接后,形成的结果静态库A却没有包含B的接口函数,用测试程序测试时,链接出错.

如果我现在的测试程序带上a.lib和b.lib,就可运行通过;
如果只带上a.lib,出现链接错误,说找不到b.lib里的函数,这说明a.lib没有
包含b.lib的代码。

b.lib当然有一个xx.h文件是表示B的输出函数,
A的工程要调用B里的函数,当然要#include "xx.h ", xx.h当然要在A的工程目录
下,b.lib也在A的工程目录下,这样编译链接后,b.libB的代码却没有链入a.libA中。
为什么?


我遇到完全同样的问题,遗憾的是,这个问题没有被完美解决。而且原始贴子由于时间久远,已经不能跟贴。

于是我又把问题再次提出来,请教各位。

...全文
309 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
min2max 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pink9527 的回复:]

不想说了
[/Quote]

你这叫什么回复嘛,连灌水都不如。
raining_walker 2011-05-24
  • 打赏
  • 举报
回复
谢谢楼主,我也一直没搞明白这个问题,现在了解了呵呵。
xspace_time 2011-05-13
  • 打赏
  • 举报
回复
不想说了
min2max 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xunxun1982 的回复:]

静态库链接静态库本来就不能组合在一起,因为静态库允许外部依赖。
可以使用vc里面的工具lib.exe之类把静态库合并
lib /out:aaa.lib a.lib b.lib
[/Quote]

原来你给出答案了,我刚才还没有看到,不过也非常感谢!
min2max 2011-05-13
  • 打赏
  • 举报
回复
自己解决了。希望对遇到同样问题的有帮助:

运行
lib.exe /OUT:ab.lib a.lib b.lib

就可以生成包含a.lib和b.lib的二合一库,客户程序仅需链接ab.lib就可以了,不再依赖b.lib。
xunxun 2011-05-13
  • 打赏
  • 举报
回复
静态库链接静态库本来就不能组合在一起,因为静态库允许外部依赖。
可以使用vc里面的工具lib.exe之类把静态库合并
lib /out:aaa.lib a.lib b.lib
ouyh12345 2011-05-13
  • 打赏
  • 举报
回复
怎么测试的?测试工程里用了b的函数?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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