VS中,如何实现包含静态库A,生成静态库B;在程序中引用静态库B的时候不需要再引用A?
答案:2 悬赏:10 手机版
解决时间 2021-03-28 01:26
- 提问者网友:一抹荒凉废墟
- 2021-03-27 13:25
VS中,如何实现包含静态库A,生成静态库B;在程序中引用静态库B的时候不需要再引用A?
最佳答案
- 五星知识达人网友:duile
- 2021-03-27 14:40
这种情况确实是没包含。构建静态库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就可以的样子……
你要包含的话,用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楼网友:行路难
- 2021-03-27 14:54
静态库只是个链接器吧,对应的dll必须存在静态库才起作用。
不行的话可以在B中动态调用A,代码稍微复杂一点追问我本想将做成一个组件静态库B,就是希望后面引入静态库B的时候不需要引入之前的A。静态库本身不应该包含链接的全部信息吗?谢谢你的回答
不行的话可以在B中动态调用A,代码稍微复杂一点追问我本想将做成一个组件静态库B,就是希望后面引入静态库B的时候不需要引入之前的A。静态库本身不应该包含链接的全部信息吗?谢谢你的回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯