使用libcurl链接程序时未解析的符号

Kyl*_*yle 30 c curl unresolved-external visual-studio

我知道这是编程问题,但我只是沮丧地想弄清楚我做错了什么..

我正在使用visual studio 2010并按照这里的所有步骤操作:http://curl.haxx.se/libcurl/c/visual_studio.pdf

当我尝试编译我的解决方案时,我不断收到此错误:

1>------ Build started: Project: LibCurl, Configuration: Debug Win32 ------
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main
1>C:\Users\Kyle\Documents\Visual Studio 2010\libcurl\VisualStudio\LibCurl\Debug\LibCurl.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

资源:

// LibCurl.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
    res = curl_easy_perform(curl);

    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

sto*_*zek 86

我一直在使用libcurl的静态版本,并且正确地将我的程序链接到它,我不得不添加定义:

CURL_STATICLIB

构建我的项目配置.

  • 这可能是常见问题之一:如果您使用libcurl作为STATIC库,则不仅需要在curl项目中定义CURL_STATICLIB,还需要在要使用它的项目中定义CURL_STATICLIB. (14认同)
  • 非常感谢.转到vc ++项目设置| c ++ | 预处理器并将CURL_STATICLIB添加到预处理器定义,它可以工作 (3认同)

cdo*_*nts 21

除了定义之外CURL_STATICLIB,对我来说还有必要链接以下依赖项(包括libcurl.liblibcurld.lib):

  • Ws2_32.lib
  • Wldap32.lib


way*_*yne 5

我遇到了类似的问题-发现我正在引用libcurl.lib的64位位置。将链接目录更改为32位位置,项目完美编译。


Big*_*ief 5

这对我有用 VS2017 - x86 发布/调试 - MFC 静态库

打开项目属性并查看以下内容

  • C/C++ - 预处理器 - 预处理器定义 - 添加 CURL_STATICLIB

  • 链接器 - 输入 - 附加依赖项 - 添加 (CTRL+C)

ws2_32.lib

标准化库

Crypt32.lib

Wldap32.lib

libcurl_a.lib(libcurl_a_debug.lib 用于调试配置)

  • C/C++ - 常规 - 附加包含目录 - 将包含文件夹添加到头文件


Wil*_*hin 4

看起来库没有成功链接。确保库目录设置为包含 libcurl dll 的完整路径。还要确保该库实际上已添加到您的项目中。

  • 您需要包含 libcurl.lib、curlib.lib (3认同)