我的程序中有第三方库。
例如:
#INCLUDE <3rdPartyHeaderA.h>
#INCLUDE <3rdPartyHeaderB.h>
int main(int argc, char** argv)
{
// some stuff
}
我如何知道3rdPartyHeaderA.h
正在使用哪个.lib
或.dll
。我查看了3rdPartyHeaderA.h
,但没有任何信息。
我问这个问题是因为我需要确定哪些.lib
或.dll
应该添加到项目环境中,因为我不想添加所有这些。
这可能是一个愚蠢的问题。如果是这样,请随时投票。 感谢。
编辑:感谢Wyzard澄清我的问题。
它询问如何确定是否声明了函数 3rdPartyHeaderA.h在Foo.lib或Bar.lib(或Foo.dll或 Bar.dll,或其他)。 - Wyzard
答案 0 :(得分:1)
除非你知道它们的相互依赖性,否则你几乎肯定必须全部添加它们。我不知道对此有何异议。
答案 1 :(得分:1)
没有自动的方式来查找&#34; lib与给定标头一起使用。编译时,链接器只需要一侧的所有函数调用和另一侧的所有库,然后开始匹配。
以下是标准解决方案,按顺序从最好到最差:
阅读您的图书馆附带的文档。添加它告诉你的lib。通常会有一些注释或指令告诉您哪些lib导出哪个头函数。
添加您可以找到的每个lib。显然从3rdPartyHeader
附带的那些开始,然后转到标准库。继续添加,直到它编译。在这一点上不要太担心添加太多;包含您不使用的库通常是安全的,因为链接器只是不会在您的可执行文件中引入该代码。
一旦你的程序使用很长的lib列表进行编译,你就可以逐个删除它们并尝试再次构建。如果你拿出xyz.lib
并且它仍在构建,那么你就不需要那个。