考虑一个名为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/