0

我使用 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 更好还是我会遇到同样的问题?

参考设置适用于 C++ 的 AWS 开发工具包

4

2 回答 2

1

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

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

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

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

包“AWSSDKCPP-Transfer”的可再分发组件。此软件包应仅作为依赖项安装。(这不是您要查找的包)。

在此处输入图像描述

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

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

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

在此处输入图像描述

希望这可以帮助。

于 2018-04-30T07:49:20.187 回答
0

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

于 2018-08-21T21:53:30.437 回答