c++ - 将 vcpkg 与 Visual Studio 2022 一起使用会产生伪造的未解析外部符号链接(symbolic link)器错误

标签 c++ visual-studio linker-errors lib vcpkg

我有一个 MFC C++ 项目,它在 Windows 10 上使用 Visual Studio 2022 构建和运行得很好。该项目根本不使用 Qt。在我使用 vcpkg 安装 Qt 6.2.1 后,项目停止构建并出现此链接器错误:

1>Qt6EntryPoint.lib(qtentrypoint_win.cpp.obj) : error LNK2019: unresolved external symbol main referenced in function WinMain

同样,我的项目中没有使用Qt6。转到项目的 Configuration Properties 并禁用 Use Vcpkg 使其再次构建。这是怎么回事,如何在不禁用 vcpkg 的情况下修复它?


我使用 VS 项目向导和默认设置创建了一个新的 C++ MFC 应用程序。它在启用 vcpkg 的情况下构建良好。


我能提供的唯一合理的解释是,很多代以前,旧的 VS,旧的 Windows,我的项目有一段时间使用 Qt4 核心中的几个类,这导致了问题,所以功能被删除了。我继续在没有安装 Qt 的 Windows 上开发它。是否有可能仍然潜伏着一些对 Qt 的引用?如何找到它?我多次检查设置,但找不到。


我查看了库搜索的顺序 (/VERBOSE:Lib),在启用 vcpkg -> Use Autolink 的情况下,首先搜索 vcpkg 文件夹。有没有办法让链接器先搜索系统文件夹?

这是正在发生的事情:

1>    Searching C:\src\vcpkg\installed\\x64-windows\lib\Qt6EntryPoint.lib:
1>      Found WinMain
1>        Referenced in msvcrt.lib(exe_winmain.obj)
1>        Loaded Qt6EntryPoint.lib(qtentrypoint_win.cpp.obj)

使用 /NODEFAULTLIB:"Qt6EntryPoint.lib" 排除 Qt6EntryPoint.lib 无效。有没有其他方法可以排除?

最佳答案

这意味着你应该在 vcpkg 中打开一个问题。
Qt6EntryPoint.lib 需要移动到/manual-link 子文件夹中。
(我真的很讨厌 vcpkg 的懒惰的 MSBuild 自动链接/链接所有功能。)

关于c++ - 将 vcpkg 与 Visual Studio 2022 一起使用会产生伪造的未解析外部符号链接(symbolic link)器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70269013/

相关文章:

c++ - Windows 中的 Qt 库链接错误

c++ - 二维数组垂直翻转

c++ - 使用指针访问数组中的对象数据成员

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

visual-studio - 我可以使用较新版本的 Visual Studio 来做 "old"的事情吗?

visual-studio - VS2012 高级版 : "Data Sources" menu item is missing

objective-c - Apple Mach-O 链接器 (id) 错误 - 困惑?

c++ - 使用 boost 将 C *FILE 转换为 C++ iostream

c++ - boost "no such file or directory"

visual-studio - 你认为 VS 和 Intellisense 会让我们变得更笨吗?