【问题标题】:C++ CURL Library Linker Error but included the right libsC++ CURL 库链接器错误,但包含正确的库
【发布时间】:2019-11-23 21:52:05
【问题描述】:

所以我正在尝试将 curl 库集成到我的 c++ 项目中。我做了以下步骤:

  • 下载 curl 库并解压
  • 运行Visual Studio 19的开发者控制台并运行以下命令:
    • cd 到 winbuild 文件夹
    • 设置 RTLIBCFG=static
    • nmake /f Makefile.vc mode=static vc=19 debug=yes
  • 在 builds 文件夹中,我将 bin、include 和 lib 文件夹复制到了我自己的 Visual Studio 项目中,并在 Settings > C/C++ > General > Additional Include Directories 下设置了 include 目录,在 Settings > Linker > General > 下设置了 library 目录附加库目录,然后是设置 > 链接器 > 输入 > 附加依赖项下的实际库文件。

我认为这应该是让 CURL 运行,但是对于 lib 的每个函数调用,我都遇到了链接错误。即使在我将这些库添加到链接器输入中的附加依赖项设置之后: Normaliz.lib;Ws2_32.lib;Wldap32.lib;Crypt32.lib;advapi32.lib;

有什么解决办法吗?在我在互联网上的搜索中,我总是得到解决方案,包括 Noraliz.lib;[...] 然后它被告知它应该运行但它对我不起作用。会很高兴得到一些帮助。这是我尝试编译的代码:

#include <iostream>
#define CURL_STATICLIB
#include <curl/curl.h>
#include <iostream>

static int writer(char* data, size_t size, size_t nmemb, std::string* writerData)
    {
    if (writerData == NULL)
        return 0;

    writerData->append(data, size * nmemb);
    return size * nmemb;
    }

int main(int argc, char** argv)
    {
    std::string content;

    curl_global_init(CURL_GLOBAL_ALL);
    CURL* curl = curl_easy_init();

    if (curl)
        {
        curl_easy_setopt(curl, CURLOPT_URL, "");
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
        CURLcode code = curl_easy_perform(curl);
        }

    curl_easy_cleanup(curl);
    curl_global_cleanup();

    return 0;
    }

【问题讨论】:

    标签: c++ curl linker


    【解决方案1】:

    您需要添加在“预处理器定义”部分中定义的CURL_STATICLIB 宏。


    也许你可以试试teemo 库,它基于 libcurl。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多