AWS C++ SDK在Visual Studio上出现链接器错误

4
我正在尝试将aws-sdk-ec2链接到我的应用程序中,但是我在Visual Studio 2013中遇到了链接错误。 我已经成功编译了SDK,并在项目设置中链接了aws-sdk-core.lib和aws-sdk-ec2.lib。
我得到的错误信息是:
“错误1 错误 LNK2001:无法解析的外部符号“char const * const Aws :: Http :: CONTENT_TYPE_HEADER”(?CONTENT_TYPE_HEADER@Http @ Aws @@ 3PBDB)E:\ Users \ .. \ .. \ .. \ main.obj”
你有什么想法这是什么问题吗?我需要链接任何aws-sdk-*组件吗?
3个回答

1
我通过添加已解决了这个问题。
USE_IMPORT_EXPORT

关于我的预处理器定义, 项目->属性->c/c++ ->预处理器


1
在我的CMake文件中插入 'set (CMAKE_CXX_STANDARD 11)' 找到了另一种解决方案。 - Awais Rafique

0

当我动态链接库时,错误已经消失:

  • 定义了USE_IMPORT_EXPORT

我在我的代码中使用了以下内容:

#define USE_IMPORT_EXPORT

但是你肯定可以通过编译器设置来定义它 项目配置属性(*) -> C/C++ -> 预处理器 -> -> 预处理器定义

现在我在官方代码存储中看到了一篇关于定义的官方帮助文档: https://github.com/aws/aws-sdk-cpp/blob/main/Docs/SDK_usage_guide.md#build-defines

  • 更改链接为动态链接:

对于调试版本:项目配置属性(*) -> C/C++ -> 代码生成 -> 运行时库 设置为多线程调试DLL (/MDd)而不是静态链接

在发布版本中,请确保设置多线程 DLL (/MD)并链接到库二进制文件的发布版本。

* - 在解决方案资源管理器中右键单击项目,然后选择属性


0

是的,Visual C++ 链接器的输出对这个问题确实很神秘。当您编译代码时,dll 导入内容尚未声明。实际上,错误信息表明链接器找不到任何符号。尝试将 USE_IMPORT_EXPORT 添加到编译器标志中。

另外,您是使用 NuGet 包还是从源代码进行编译?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接