在 VS 2022 for exe 项目中构建和链接没有 vcpkg 的外部依赖项

Build and Link external dependency without vcpkg in VS 2022 for exe project

提问人:cptalpdeniz 提问时间:6/27/2023 最后编辑:Mathlightcptalpdeniz 更新时间:7/7/2023 访问量:109

问:

我们正在尝试从我们的项目中删除 vcpkg,因为我们最近在具有多种配置的多台机器上进行开发时遇到了很多问题。我们的项目有几个外部依赖项,例如、等。我们成功地删除了所有外部依赖项,并将它们包含在项目结构本身中,除了 .即使 IXWebSocket 本地存在于文件夹结构中(由于找不到文件,我也没有收到任何错误),但当我们禁用时,链接器会失败,特别是该功能。boostIXWebSocketEigenIXWebSocketvcpkgAutoLink

据我了解,首先需要构建库,然后我的项目的链接器会将构建的 ws 库的必要库与我的项目链接起来。我的理解是(可能是错误的),当请求时构建 ixwebsocket 并与我的项目正确链接。IXWebSocketAutoLink

我得到的错误是:

LNK2019: unresolved external symbol...
LNK2001: unresolved external symbol...
  • 我在这里的理解正确吗?
  • 我怎样才能先建好?IXWebSocket
  • 我已经读到我可以使用或,如何集成 CMake 来构建 IXWebSocket?我不想将cmake集成到整个项目中,只需构建ws包即可。vcpkgCMake

这是在 Windows 10、Visual Studio 2022 社区、C++20 上

编辑:我知道错误可能是相同的,但它远非重复的问题。这是一个非常具体的问题,涉及具有外部依赖性的项目的构建/链接过程,而不是基本的错误问题。unresolved external symbolunresolved external symbol

C Visual-C++ 链接器错误 vcpkg ixwebsocket

评论

0赞 drescherjm 6/27/2023
我们正在尝试从我们的项目中删除 vcpkg,因为我们最近在具有多种配置的多台机器上进行开发时遇到了很多问题。我对在生产应用程序中使用的建议是找到一个有效的 git 提交并在所有系统上安装相同的 git rev,并且永远不要更新 vcpkg(或者至少不经常在测试盒上进行更新,当它通过严格的测试时,然后将该 git rev 应用于所有系统)。我对 Visual Studio 更新执行类似操作。vcpkg
0赞 drescherjm 6/27/2023
vcpkg 中还有清单模式,可以帮助保持所有版本相同。

答: 暂无答案