【问题标题】:AWS C++ SDK linker error on visual studioVisual Studio 上的 AWS C++ SDK 链接器错误
【发布时间】:2016-05-24 10:56:04
【问题描述】:

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

【问题讨论】:

    标签: c++ amazon-web-services visual-studio-2013


    【解决方案1】:

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

    您也是使用 NuGet 包还是从源代码编译?

    【讨论】:

      【解决方案2】:

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

      USE_IMPORT_EXPORT
      

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

      【讨论】:

      • 通过在我的 cmake 文件中插入 'set (CMAKE_CXX_STANDARD 11)' 找到了另一个解决方案
      【解决方案3】:

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

      • 已定义 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)并链接到发布版本的库二进制文件。

      * - 在 Solution ExplorerProperties

      中右键单击项目

      【讨论】:

        猜你喜欢
        • 2014-10-17
        • 2013-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-26
        • 2021-07-02
        • 2015-07-15
        相关资源
        最近更新 更多