安装AWS SDK for C++:选Nuget还是Vcpkg?Nuget装后DLL缺失怎么办?
改用Vcpkg完全可行,甚至能解决你当前的DLL部署痛点
首先明确说:是的,改用Vcpkg绝对是解决你这个问题的好方案。我之前也遇到过NuGet管理C++ SDK时手动复制DLL的繁琐问题,Vcpkg在C++依赖的部署上要省心太多。
为什么Vcpkg能解决你的DLL问题?
- Vcpkg默认会在构建项目时自动将依赖的DLL复制到输出目录,不需要你手动指定路径或者复制文件。它会根据你项目的配置(Debug/Release、Win32/x64)自动匹配对应的二进制文件,完全省去了手动找路径的麻烦。
- 对比NuGet的C包,很多时候需要手动配置
copy local或者添加路径到环境变量,Vcpkg的集成更贴近C项目的构建流程,尤其是和Visual Studio配合的时候。
具体操作步骤(以Visual Studio为例)
- 先安装Vcpkg:克隆仓库后运行
bootstrap-vcpkg.bat(Windows下),完成后可以把vcpkg路径加到系统环境变量里,方便全局调用。 - 把Vcpkg集成到Visual Studio:运行
vcpkg integrate install,这一步会让VS自动识别Vcpkg安装的依赖,不需要手动在项目里添加引用。 - 安装AWS SDK for C++的包:比如你需要的Transfer模块,运行
vcpkg install aws-cpp-sdk-transfer:x86-windows(Debug的话加-debug后缀:aws-cpp-sdk-transfer:x86-windows-debug,或者直接安装所有配置aws-cpp-sdk-transfer:x86-windows会同时装Release和Debug)。 - 回到你的VS项目,直接包含AWS SDK的头文件(比如
#include <aws/transfer/TransferManager.h>),编译运行即可——Vcpkg会自动处理链接库和DLL复制的问题。
额外的好处
- Vcpkg的包版本更新更及时,而且可以通过
vcpkg upgrade批量更新依赖,比NuGet更方便管理C++生态的包。 - 如果需要跨平台开发(比如Linux/macOS),Vcpkg的用法几乎一致,不需要重新学习一套依赖管理流程。
注意事项
- 安装时要注意triplet的选择:x86对应Win32,x64对应64位项目,debug后缀对应Debug配置,别选错了导致找不到库。
- 如果是CMake项目,Vcpkg也支持通过
-DCMAKE_TOOLCHAIN_FILE=...的方式集成,同样能自动处理DLL和库的路径。
总的来说,改用Vcpkg不仅能解决你当前手动复制DLL的麻烦,还能让后续的依赖管理更顺畅,非常推荐尝试。
内容的提问来源于stack exchange,提问作者parsley72
相关产品推荐
相关产品推荐

