如何在 Visual Studio 中的库编译时获取链接器错误?
How to get linker errors at library compile-time in Visual Studio?
考虑一个名为 Exe
的可执行文件,它依赖于一个名为 Lib1
的静态库,而 Lib1
依赖于另一个名为 Lib2
的静态库,因此:
Exe -> Lib1 -> Lib2 (where '->' marks dependency)
假设我从 Lib1
的附加库中删除了 Lib2
。根据我的经验,Lib1
仍会编译,但是当我尝试编译 Exe
(链接到 Lib1
)时,将出现链接器错误,指出 Lib2
符号Lib1
.
中缺少
有没有一种方法可以在编译 Lib1
时处理 "detect" 未解析的符号,而无需诉诸编译 Exe
来获得 Lib1
中未解析符号的通知?如果不是,为什么?
假设你说的是静态库,那就没办法了。静态库不会相互 link。 linker 在您在 linker 命令行上列出的所有静态库中依次查找在可执行文件中找不到的符号。如果它在静态库中找到未知符号,它会在其他静态库中查找,但该进程是由您正在 linking 的可执行文件(或 DLL)驱动的。
考虑一个名为 Exe
的可执行文件,它依赖于一个名为 Lib1
的静态库,而 Lib1
依赖于另一个名为 Lib2
的静态库,因此:
Exe -> Lib1 -> Lib2 (where '->' marks dependency)
假设我从 Lib1
的附加库中删除了 Lib2
。根据我的经验,Lib1
仍会编译,但是当我尝试编译 Exe
(链接到 Lib1
)时,将出现链接器错误,指出 Lib2
符号Lib1
.
有没有一种方法可以在编译 Lib1
时处理 "detect" 未解析的符号,而无需诉诸编译 Exe
来获得 Lib1
中未解析符号的通知?如果不是,为什么?
假设你说的是静态库,那就没办法了。静态库不会相互 link。 linker 在您在 linker 命令行上列出的所有静态库中依次查找在可执行文件中找不到的符号。如果它在静态库中找到未知符号,它会在其他静态库中查找,但该进程是由您正在 linking 的可执行文件(或 DLL)驱动的。