我终于将Casablanca / CPPRESTSDK与VS17链接在一起,感谢本文Statically linking Casablanca/CPPREST SDK和其他文章。但是现在我看到,当我开始项目时,由于某种原因,VS会在.exe文件夹中自动生成3个DLL文件zlib1.dll
SSLEAY32.dll
LIBEAY32.dll
,但实际上我静态地链接为没有他们。我也有vcpkg-master\installed\x86-windows-static\lib
的lib格式的这些文件,我可以以某种方式代替dll使用它们吗?
答案 0 :(得分:0)
我有同样的问题。我有一个Visual Studio解决方案,其中的项目使用共享DLL中的MFC并使用多线程DLL运行时库。我想静态链接到cpprestsdk,而无需分发三个额外的DLL。链接到cpprestsdk的静态版本不起作用:由于运行时库冲突(/MT
-多线程和/MD
-多线程DLL),我无法链接。我找不到使用/MD
开关(多线程DLL)但导出为库的预编译版本。所以我不得不自己编译。
我的解决方案:
vcpkg
(https://github.com/microsoft/vcpkg)。这是一个程序包C和C ++库程序包管理器。您将需要“引导”它。请参阅快速入门。cmake ../Release -A win32 -DCMAKE_TOOLCHAIN_F ILE=d:\jw\git\vcpkg\scripts\buildsystems\vcpkg.cmake
。cpprestsdk.sln
解决方案,并对cpprest
项目中的Release和Debug配置执行以下操作:
.lib
。然后我可以在解决方案中使用生成的库。
packages
目录中添加zlib和openssl库。bcrypt.lib
,winhttp.lib
和crypt32.lib
添加到链接器输入(Statically linking Casablanca/CPPREST SDK)_NO_ASYNCRTIMP
。我希望这可以帮助某人节省一些我失去工作的时间!