我使用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更好还是我会遇到同样的问题?
答案 0 :(得分:0)
我应该使用Nuget还是Vcpkg安装适用于C ++的AWS开发工具包?
您可以使用nuget安装AWS SDK for C ++项目。
但是您应该使用 AWSSDKCPP-service 名称将特定服务的库添加到项目中,而不是安装Redistributable组件AWSSDKCPP-Transfer.redist
。
当你查看nuget包AWSSDKCPP-Transfer.redist
的描述时,你会发现这个nuget包:
包'AWSSDKCPP-Transfer'的可再发行组件。此程序包只应作为依赖项安装。 (这不是您要寻找的包裹。)
所以你应该安装nuget包AWSSDKCPP-Transfer
。
安装nuget包AWSSDKCPP-Transfer
之后,然后构建项目,为您使用的每个运行时/体系结构配置自动包含正确的二进制文件 - 您不需要自己管理这些依赖项。
将aws-cpp-sdk-transfer.dll
,aws-cpp-sdk-s3.dll
和aws-cpp-sdk-core.dll
复制到输出目录:
希望这有帮助。
答案 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