none
C++ REST SDK 遇到的链接错误 RRS feed

  • 问题

  • wstring strClient(_server);
    strClient.append(L"/getprojectinfobyudid.api");
    http_client_config clientConfig;
    clientConfig.set_timeout(utility::seconds(5)); // 设置超时时间
    http_client client(strClient, clientConfig);

    如上示例代码,当添加http_client_config这个参数时,就会出现

    “error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall web::details::win32_encryption::~win32_encryption(void)" (__imp_??1win32_encryption@details@web@@QAE@XZ),该符号在函数 "public: __thiscall web::credentials::~credentials(void)" (??1credentials@web@@QAE@XZ) 中被引用”

    在网上搜索了一下,发现这个网页的最底部有个解决方案,但看不懂。

    to resolve the linking errors related to “compression” define CPPREST_EXCLUDE_COMPRESSION when building

    https://katyscode.wordpress.com/2014/04/01/how-to-statically-link-the-c-rest-sdk-casablanca/

    求解,谢谢!


    我是快乐的小鱼^_^

    2017年6月13日 8:30

全部回复

  • Hi,

    感谢在MSDN论坛发帖。

    请问你是否正确安装了Rest SDK包并引用了头文件和namespace?

    #include <cpprest/http_client.h>
    #include <cpprest/filestream.h>
    
    using namespace web;                        
    using namespace web::http;                  
    using namespace web::http::client;     

    这里有篇文档,关于如何配置和使用Http Client , 你可以参考一下。

    https://github.com/Microsoft/cpprestsdk/wiki/Getting-Started-Tutorial

    希望对你有所帮助。

    Best Regards,
    Sera Yu


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    2017年6月13日 9:34
  • 已经正确安装了Rest SDK包并引用了头文件和namespace。

    当使用http_client client(strClient);是没任何问题的,我已经正常使用好几天了。因为我要设置超时时间,就多加了个http_client_config参数,变成http_client client(strClient, clientConfig);之后,就出现这个链接问题了。

    我在最后也引用了一个网站的解决方案,

    to resolve the linking errors related to “compression” define CPPREST_EXCLUDE_COMPRESSION when building

    如果你能看懂就帮忙解读一下。


    我是快乐的小鱼^_^

    2017年6月13日 10:00
  • >>我在最后也引用了一个网站的解决方案,

    “to resolve the linking errors related to “compression” define CPPREST_EXCLUDE_COMPRESSION when building”

    如果你能看懂就帮忙解读一下。

    CPPREST_EXCLUDE_COMPRESSION是一个标志,如果设置的话,则意味着没有外部依赖关系。

    在http_helper.cpp中, 它已经针对支持压缩的平台进行了设置。

    #if __APPLE__
    #include "TargetConditionals.h"
    #if defined(TARGET_OS_MAC)
    #if !defined(CPPREST_EXCLUDE_COMPRESSION)
    #define CPPREST_HTTP_COMPRESSION
    #endif // !defined(CPPREST_EXCLUDE_COMPRESSION)
    #endif // defined(TARGET_OS_MAC)
    #elif defined(_WIN32) && (!defined(WINAPI_FAMILY) || WINAPI_PARTITION_DESKTOP)
    #if !defined(CPPREST_EXCLUDE_WEBSOCKETS) && !defined(CPPREST_EXCLUDE_COMPRESSION)
    #define CPPREST_HTTP_COMPRESSION
    #endif // !defined(CPPREST_EXCLUDE_WEBSOCKETS) && !defined(CPPREST_EXCLUDE_COMPRESSION)
    #endif
    
    #if defined(CPPREST_HTTP_COMPRESSION)
    #include <zlib.h>
    #endif

    你也可以手动设置。

    #define CPPREST_HTTP_COMPRESSION
    #include <zlib.h>

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    2017年6月14日 9:05
  • 谢回复。

    但依然不可以。即使我在“C/C++”的“预处理器定义”中也添加了CPPREST_HTTP_COMPRESSION也不行。


    我是快乐的小鱼^_^

    2017年6月15日 6:02
  • >>但依然不可以。即使我在“C/C++”的“预处理器定义”中也添加了CPPREST_HTTP_COMPRESSION也不行。

    你可能需要在编译静态库项目时定义_NO_ASYNCRTIMP和_NO_PPLXIMP ,避免cpprest_compat.h将创建一个#define _ASYNCRTIMP __declspec(dllimport),导致上述错误。

    同时请尝试将Crypt32.lib添加到项目属性->Linker->Input->Additional Dependencies。

    希望对你有所帮助。

    Best Regards,
    Sera Yu


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    2017年6月20日 7:22