我应该使用Nuget还是Vcpkg安装适用于C ++的AWS开发工具包?

时间:2018-04-28 22:44:29

标签: c++ visual-studio-2017 nuget aws-sdk vcpkg

我使用Nuget安装适用于C ++的AWS开发工具包。我的构建工作正常,但当我尝试运行时,我得到一个丢失的Dll消息。我要么必须添加Dll路径或将其复制到我的输出目录,但源路径是C:\ Users \ Tom \ Documents \ Bitbucket \ nos \ MyApp \ Builds \ packages \ AWSSDKCPP-Transfer.redist.1.4.34 \ build \ native \ bin \ Win32 \ Debug \ v141 \ dynamic \ aws-cpp-sdk-transfer.dll这看起来很荒谬。我用Nuget for C ++找不到一种更简单的方法。

有人建议我改用Vcpkg。它比Nuget更好还是我会遇到同样的问题?

供参考Setting Up the AWS SDK for C++

2 个答案:

答案 0 :(得分:0)

  

我应该使用Nuget还是Vcpkg安装适用于C ++的AWS开发工具包?

您可以使用nuget安装AWS SDK for C ++项目。

但是您应该使用 AWSSDKCPP-service 名称将特定服务的库添加到项目中,而不是安装Redistributable组件AWSSDKCPP-Transfer.redist

当你查看nuget包AWSSDKCPP-Transfer.redist的描述时,你会发现这个nuget包:

  

包'AWSSDKCPP-Transfer'的可再发行组件。此程序包只应作为依赖项安装。   (这不是您要寻找的包裹。)

enter image description here

所以你应该安装nuget包AWSSDKCPP-Transfer

安装nuget包AWSSDKCPP-Transfer之后,然后构建项目,为您使用的每个运行时/体系结构配置自动包含正确的二进制文件 - 您不需要自己管理这些依赖项。

aws-cpp-sdk-transfer.dllaws-cpp-sdk-s3.dllaws-cpp-sdk-core.dll复制到输出目录:

enter image description here

希望这有帮助。

答案 1 :(得分:0)

我意识到问题在于,在单元测试中,我们将“构建事件”->“构建后事件”->“命令行”设置为"$(ProjectDir)"RunTestExe.bat $(QTDIR) "$(TargetDir)$(TargetFileName)",以便在构建单元测试后运行它们。如果我删除此Nuget,则在调试时会正确复制Dll。我猜它正在使用相同的字段。这似乎是一个需要修复的错误,因此我向Microsoft提出了它:https://developercommunity.visualstudio.com/content/problem/245884/nuget-doesnt-handle-dependencies-for-debugging.html