gpt4 book ai didi

c++ - 如何在VS项目中静态链接没有dll文件的cpprest?

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:46 27 4
gpt4 key购买 nike

我终于将 Casablanca/CPPRESTSDK 与 VS17 链接起来,感谢这篇文章 Statically linking Casablanca/CPPREST SDK还有一些人。但现在我看到,当我开始项目时,出于某种原因 VS 自动生成 3 个 DLL 文件 zlib1.dll SSLEAY32.dll LIBEAY32.dll在带有 .exe 的文件夹中,但实际上我静态链接根本没有它们。我在 vcpkg-master\installed\x86-windows-static\lib 中也有这些 lib 格式的文件,我能以某种方式使用它们而不是 dll 吗?

最佳答案

我遇到了同样的问题。我有一个 Visual Studio 解决方案,其中的项目在共享 DLL 中使用 MFC 并使用多线程 DLL 运行时库。我想静态链接到 cpprestsdk 而无需分发三个额外的 DLL。链接到 cpprestsdk 的静态版本不起作用:由于运行时库冲突,我无法链接(/MT - 多线程和 /MD - 多线程 DLL) .我找不到使用 /MD 开关(多线程 DLL)但作为库导出的预编译版本。所以我不得不自己编译它。

我的解决方案:

  • 下载 vcpkg ( https://github.com/microsoft/vcpkg )。这是一个包 C 和 C++ 库包管理器。您将需要“引导”它。请参阅快速入门。
  • 为 cpprestsdk 安装必要的依赖项:`vcpkg install --triplet x86-windows zlib openssl boost-system boost-date-time boost-regex boost-interprocess websocketpp brotli
  • 从 github 下载 cpprestsdk ( https://github.com/Microsoft/cpprestsdk )
  • 生成一个 Visual Studio 解决方案文件 (https://github.com/microsoft/cpprestsdk/wiki/How-to-build-for-Windows)。我想生成一个 x86 版本,所以我不得不使用以下命令>.
  • 打开cpprestsdk.sln 解决方案并在cpprest 项目中对Release 和Debug 配置执行以下操作:
    • 将配置类型更改为静态库
    • 将目标文件扩展名更改为.lib
    • 构建调试和发布版本。

然后我可以在我的解决方案中使用生成的库。

  • 将 cpprestsdk 包含目录添加到我的项目
  • 将 cpprestsdk 库添加到链接器输入
  • 从 cpprestsdk packages 目录添加 zlib 和 openssl 库。
  • 也将库 bcrypt.libwinhttp.libcrypt32.lib 添加到链接器输入 ( Statically linking Casablanca/CPPREST SDK )<
  • 您还需要将预处理器标志 _NO_ASYNCRTIMP 添加到您使用 cpprestsdk 的项目中。

我希望这可以帮助其他人节省一些我在工作中浪费的时间!

关于c++ - 如何在VS项目中静态链接没有dll文件的cpprest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56097412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com