如何在VS项目中静态链接没有dll文件的cpprest?
How to statically link cpprest without dll files in VS project?
我终于将Casablanca/CPPRESTSDK与VS17链接起来,感谢这篇文章静态链接Casablanca/CPPREST SDK和其他一些。但是现在我明白了,当我开始项目时,出于某种原因,VS 自动生成了 3 个 DLL 文件,zlib1.dll
SSLEAY32.dll
LIBEAY32.dll
在带有.exe的文件夹中,但我实际上是静态链接的,因为根本没有它们。我也有vcpkg-masterinstalledx86-windows-staticlib
的 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 版本,所以我不得不使用以下命令
cmake ../Release -A win32 -DCMAKE_TOOLCHAIN_F ILE=d:jwgitvcpkgscriptsbuildsystemsvcpkg.cmake
. - 打开
cpprestsdk.sln
解决方案,并对cpprest
项目中的发布和调试配置执行以下操作:- 将配置类型更改为静态库
- 将目标文件扩展名更改为
.lib
。 - 生成调试和发布版本。
然后,我可以在我的解决方案中使用生成的库。
- 将 CPPrestsdk 包含目录添加到我的项目
- 将 CPPrestsdk 库添加到链接器输入
- 从 CPPrestsdk
packages
目录中添加 zlib 和 openssl 库。 - 将库
bcrypt.lib
、winhttp.lib
和crypt32.lib
也添加到链接器输入(静态链接卡萨布兰卡/CPPREST SDK) - 您还需要将预处理器标志
_NO_ASYNCRTIMP
添加到使用 CPPrestsdk 的项目中。
我希望这可以帮助某人节省我失去的一些时间
!相关文章:
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 将 dll 文件注入 UWP
- 从 .lib 文件创建一个.dll文件
- 使用dll源代码C++调试dll文件
- 如何将我的程序转换为.dll文件并使用rundll32.exe在cmd中运行它?
- 提升 Python 找不到 dll 文件
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- 尝试在 python 中正确加载和使用 dll 文件
- 如何在运行时从 c++ 中的 DLL 文件创建对象?
- 是否可以单步执行.dll文件中定义的成员函数?
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- 设置所需DLL文件的自定义路径:电子应用
- LUA5.3 DLL文件中缺少名称
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- 将字符串从 C# 发送到 dll 文件C++
- DLL文件中函数的预期行为在C中编写并从CPP文件打电话
- 如何在VS项目中静态链接没有dll文件的cpprest?
- 加载C DLL文件时,如何修复异常_access_violation
- 编译时如何隐藏DLL文件中的字符串?
- 找不到 C# C++ DLL 文件