【问题标题】:How to get linker errors at library compile-time in Visual Studio?如何在 Visual Studio 中的库编译时获取链接器错误?
【发布时间】:2018-02-11 22:39:10
【问题描述】:

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

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

假设我从Lib1 的附加库包含中删除了Lib2。根据我的经验,Lib1 仍然可以编译,但是当我尝试编译 Exe(链接到 Lib1)时,会出现链接器错误,指出 Lib2 符号从 Lib1 中丢失。

有没有办法在编译Lib1 时“检测”未解析的符号,而无需通过编译Exe 来获得Lib1 中未解析符号的通知?如果不是,为什么?

【问题讨论】:

  • lib1 是 DLL 还是静态库?
  • 一个静态库。

标签: c++ visual-studio linker shared-libraries


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多