考虑一个名为Exe的可执行文件,该可执行文件依赖于一个名为Lib1的静态库,而Lib1依赖于另一个名为Lib2的静态库,因此:

Exe -> Lib1 -> Lib2  (where '->' marks dependency)

假设我从Lib2的其他库包含物中删除了Lib1。以我的经验,Lib1仍会编译,但是当我尝试编译Exe(链接到Lib1)时,将发生链接器错误,指出Lib2中缺少Lib1符号。

有没有一种方法可以在编译Lib1时“检测”未解析的符号,而无需借助Exe来获取Lib1中未解析的符号的通知?如果没有,为什么?

最佳答案

假设您正在谈论静态库,那么就没有办法这样做。静态库不相互链接。链接器依次在链接器命令行上列出的所有静态库中的可执行文件中查找找不到的符号。如果它在静态库中找到未知符号,则会在其他静态库中查找,但是该过程由您链接的可执行文件(或DLL)驱动。

关于c++ - 如何在Visual Studio中的库编译时获取链接器错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48737255/

10-11 16:53