c++ - MSVC 查找符号的来源
问题描述
情况:
- 我正在使用 CI 使用 CMake 和 MSVC 编译我的项目的 Windows 版本
- 它在最后错误地抱怨两个丢失的符号(
__std_system_error_allocate_message
和__std_system_error_deallocate_message
) - 当我在自己的计算机上复制构建过程时,构建完成得很好并且工件运行没有错误。
- 在 Google 上搜索这些符号不会产生关于它们应该在哪些库中定义的线索。
这导致了我的问题:
- 是否可以查看 MSVC 链接器在哪里找到特定符号?
- 我能够找到说明来查看特定库中定义了哪些符号,但是这个项目链接了几十个库,而我到目前为止搜索的那些并没有定义符号。我认为这种方法容易出错,因为我可能会在不知情的情况下错过一个库。
解决方案
@Richard Critten 为我指出了正确的道路,问题是由于每个系统上有不同版本的 MSVC 工具链。GitLab 的 CI 运行者使用的是 16.2.3.0 版构建工具,而我使用的是更新的 16.6.1.0。从该页面卸载并安装 16.2.3 会重现该错误。重新编译我之前使用较新的工具链编译的依赖项,然后解决了两个系统上的错误。