2010-11-14 19 views
26

鏈接一個程序時,我知道這是編程問題,但我只是感到沮喪試圖找出我在做什麼錯..尚未解決的符號使用的libcurl

我使用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 ========== 

來源:

// 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; 
} 
+0

請確保您已執行鏈接pdf中的步驟4.3.2和4.3.3。你會得到一個鏈接器錯誤,這意味着它沒有鏈接到文件'libcurl.lib'。 – 2010-11-14 08:43:48

+0

謝謝傑西。我會更慢地重做這些步驟,看看它爲什麼沒有被鏈接。謝謝您的幫助! – Kyle 2010-11-14 09:02:48

回答

2

看起來像庫沒有成功鏈接。確保庫目錄設置爲包含libcurl dll的完整路徑。還要確保這個庫實際上被添加到你的項目中。

+2

您需要包含libcurl.lib,curllib.lib – 2012-12-03 06:56:31

76

我一直在使用的libcurl的靜態版本,和我的節目反對正確鏈接,我不得不添加的定義:

CURL_STATICLIB

建立我的項目的配置。

+13

這可能是一個常見問題:如果您使用libcurl作爲STATIC庫,則不僅需要在curl項目中定義CURL_STATICLIB,還需要在項目中定義CURL_STATICLIB想要使用它。 – PeterK 2012-10-29 08:58:48

+0

我剛剛遇到的另一個有趣的問題是:您可以在主項目中定義它,並忘記在您正在使用的另一個vcproj中提及。 – 2013-02-11 16:36:13

+3

非常感謝你。轉到vC++項目設置| C++ |預處理器並將CURL_STATICLIB添加到預處理器定義中,並且它可以工作 – 2015-02-22 10:54:55

3

我遇到了類似的問題 - 發現我引用了libcurl.lib的64位位置。將鏈接目錄更改爲32位位置,並且項目完美編譯。

12

除了定義CURL_STATICLIB,對我來說,也有必要在以下依存關係(包括libcurl.liblibcurld.lib)鏈接:

  • Ws2_32.lib
  • Wldap32.lib
+0

定義'CURL_STATICLIB'保存我的培根!謝謝! – T4cC0re 2017-05-30 18:06:39

0

很多想法和配置後,我解決了這個問題:

#pragma comment(lib, "lib/libcurl_a.lib")

其中libcurl_a.lib是curl庫文件的名稱,lib是包含它的文件夾。