VC中生成Lib库时,是不是只是调用编译器,而没有调用链接器?

zjwzcnjsy 发布于 2013/09/13 14:34
阅读 192
收藏 0

如题。

比如库A引用库B,然后在工程C使用库A(未带库B)时,编译出错。但是带B(即C工程链接加入A和B库),编译运行都没问题。

再则,使用dumpbin工具查看库A的符号表,可以清晰的看到库A中引用B中的函数符号前标明是未定义的。

只是想确认一下上面那个标题是不是正确的。

以下是问题补充:

@zjwzcnjsy:说的是windows下的静态库,非dll (2013/09/13 15:15)
加载中
0
bygreencn
bygreencn
你的这种情况是没有进行链接的。
z
zjwzcnjsy
回复 @zjwzcnjsy : 说的是windows下的静态库,非dll
z
zjwzcnjsy
回复 @bygreencn : ???。 A库引用B库,生成lib库A时,A中调用B库的函数,该函数的代码未被拷贝到A库中,这样的说法对吗?
bygreencn
bygreencn
标题相当的有问题,你要表达的是VC生成lib时如果同时需调用其他lib时并未链接其他lib。
z
zjwzcnjsy
那就是说标题的说法是没有什么问题的?
0
平原君
平原君
lib要看是动态库还是静态库,动态库可以理解成一份函数声明表,静态库则会包含函数实现
z
zjwzcnjsy
说的是windows下的静态库,非dll
z
zjwzcnjsy
说的是静态库
0
zengraoli
zengraoli
没用过vs编译器?
0
h
huawuya
只有在A工程的属性->Librarian->Additional Dependencies中加入B.lib,生成的A.lib中才会包含B的内容。如果只是project dependencies中设置了依赖关系,A中不会包含B的内容,生成exe或dll的时候才会去真正做链接。
返回顶部
顶部