visual studio上的AWS C++SDK链接器错误

AWS C++ SDK linker error on visual studio

本文关键字:链接 错误 C++SDK AWS studio 上的 visual      更新时间:2023-10-16

我正试图将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-*组件吗?

是的,visual-c++链接器的输出在这个链接器上真的很神秘。编译代码时尚未声明dll导入内容。错误的真正含义是链接器找不到任何符号。尝试将USE_IMPORT_EXPORT添加到编译器标志中。

你是在使用NuGet包还是从源代码编译?

我已经通过添加解决了这个问题

USE_IMPORT_EXPORT

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

当动态链接库时,错误消失了:

  • 定义的USE_IMPORT_EXPORT

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

#define USE_IMPORT_EXPORT

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

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

  • 将链接更改为动态链接:

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

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

*-右键单击解决方案浏览器属性中的项目