我是C++新手,有興趣編寫一個簡單的應用程序從互聯網下載HTTP文件並處理它的內容。無論如何,我在網上找到一個名爲libcurl的庫。我去以下網站:在C++應用程序中構建/編譯libcurl問題
http://curl.haxx.se/download.html
- 我應該下載源歸檔文件或二進制包(Win64的MinGW64)?使用源代碼檔案與二進制代碼檔案有什麼區別和優缺點?
- 因爲我正在編寫C++應用程序,我應該使用curlcpp綁定嗎?我怎樣才能將curlcpp綁定到這個?
無論如何,我下載了curl-7.34.0.zip(Source Archive)並在裏面,它包含了很多文件夾。我懷疑,我將需要包括文件夾爲:
- 包括
- LIB
- SRC
我使用的代碼塊IDE。我「遞歸地添加」文件夾「include/curl」到我的項目中。它看起來像這樣:
我main.cpp中包含以下代碼(來自示例應用程序的網站上獲取):
#include <iostream>
#include <stdio.h>
#include "curl/curl.h"
using namespace std;
int main()
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
我收到試圖建立時,下面的錯誤信息/編譯。
undefined reference to '_imp__curl_easy_init'
undefined reference to '_imp__curl_easy_setopt'
undefined reference to '_imp__curl_easy_perform'
undefined reference to '_imp__curl_easy_strerror'
undefined reference to '_imp__curl_easy_cleanup'
我不確定我缺少什麼或者我的文件夾目錄是否被錯誤地使用。你有什麼建議可以幫助我通過源碼歸檔或二進制包來構建嗎?謝謝。
嗨米迦勒。在下載的Source Archive zip中,我似乎找不到任何庫(.a,.so,.lib或.dll)。順便說一下,這是Windows的。我只在「include」,「src」和「lib」文件夾中看到.h/.cpp文件。我是否需要下載Windows 64「Package」? – codeshark
作爲嘗試使用「軟件包」而不是「源代碼歸檔」構建的實驗,我創建了一個新項目,然後繼續下載Win64 - MinGW64二進制包。這在壓縮文件中有「.dll」文件,但不包括源代碼。它有libcurl.dll,libeay32.dll,ssleay32.dll。我試圖在構建選項==>鏈接器設置中將它作爲鏈接庫添加,但是在文件瀏覽器中看不到任何內容,因爲在CodeBlocks中,似乎唯一可接受的庫文件是* .a,* .so ,* .lib和* .dyl – codeshark
您是否能夠成功鏈接上面提到的.dll文件,並且能夠運行源代碼而不會出現編譯錯誤? – codeshark