VS中,如何实现包含静态库A,生成静态库B;在程序中引用静态库B的时候不需要再引用A?

我利用静态库A生成静态库B,然后在程序中引用静态库B的时候,如果不将静态库A也一起引用,程序报错,提示找不到静态库A,我的疑问在于:在利用静态库A生成静态库B的时候,不应该已经将A包含到B中了吗?

这种情况确实是没包含。构建静态库B的时候,里面最多就可能只是写了要引用A,或者甚至连引用A都没写。
你要包含的话,用link工具把静态库A里面的obj文件解出来,然后在生成静态库B的时候把这些.obj文件也搞进去追问

你好,我构建静态库B的时候,只是简单地引用A。然后,可否推荐一下解析obj文件的工具,以及生成静态库B的时候添加obj文件的方法,不胜感激

追答

比如我有这么四个函数,每个文件放一个函数:

int add(int a, int b) { retur a+b; }

int sub(int a, int b) { return add(a, -b); }

int inc(int a) { return add(a, 1); }

int dec(int a) { return sub(a, 1); }

很明显,后两个依赖前两个。

我现在把前两个放进a.lib后两个放进b.lib,这样调用b.lib的地方如果只链接了b.lib,就会出现找不到add和sub函数的情况(因为没有链接a.lib)。

如果把a.lib和b.lib合并在一起,再链接的时候就没有这个问题了


另:好像不用把里面的obj文件拆出来、直接合并lib就可以的样子……

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-27
静态库只是个链接器吧,对应的dll必须存在静态库才起作用。
不行的话可以在B中动态调用A,代码稍微复杂一点追问

我本想将做成一个组件静态库B,就是希望后面引入静态库B的时候不需要引入之前的A。静态库本身不应该包含链接的全部信息吗?谢谢你的回答

相似回答