2011-05-25 110 views
1

我的問題是非常相似,這一個: https://stackoverflow.com/questions/4351877/link-libcurl-library-using-scons問題使用的libcurl和SCons的C++

我有一個C++程序中,我有使用SCons的編譯,我試圖用libcurl的發佈消息發送到服務器。我已經連接的庫與此:

#include "curl/curl.h" 
#include "curl/types.h" 
#include "curl/easy.h" 

問題出現在這裏(取代碼從主站):

CURL *curl; 
CURLcode res; 
struct curl_httppost *formpost = NULL; 
struct curl_httppost *lastptr = NULL; 
struct curl_slist *headerlist = NULL; 
static const char buf[] = "Expect:"; 
curl_global_init(CURL_GLOBAL_ALL); 

我收到以下錯誤,當我嘗試編譯: 未定義的參考`curl_global_init'

我一直堅持這一個星期了,任何想法如何解決這個問題?

回答

0

這是一個鏈接器錯誤,與編譯無關。你是否與捲曲庫鏈接?

+0

我不知道如何鏈接庫與scons ...我應該在這裏發佈整個SConstruct文件? – Bob 2011-05-25 19:37:06

+0

那麼,我不得不問爲什麼你使用scons呢?至於從我這裏得到一個答案,張貼文件將是無用的,因爲我不會碰觸scons與一個bargepole。 – 2011-05-25 19:41:49

+0

我希望我不必,但是我的程序使用了大量使用scons的CLAM Audio框架。切換到g ++會更令人頭疼 – Bob 2011-05-25 19:44:06

4

這是一個鏈接錯誤,這是因爲您可能沒有告訴鏈接程序將您的應用程序鏈接到libcurl,或者您沒有指定正確的目錄來找到它。

查看文檔上的部分Linking with Libraries

編輯:

在一個小測試,我這樣做了,SConstruct看起來是這樣的:

Program('mycurl.c', LIBS='curl', 
        LIBPATH=['/usr/lib', '/usr/local/lib']) 

而且隨着scons -Q編譯成功並打印:

gcc -o mycurl.o -c mycurl.c 
gcc -o mycurl mycurl.o -L/usr/lib -L/usr/local/lib -lcurl 

這正是你手動做的。

+0

我明白如何在gcc/g ++中做到這一點,但是如何在scons中工作? – Bob 2011-05-25 19:39:08

+0

參考scons文檔更新了答案。 – karlphillip 2011-05-25 19:42:45

+0

我爲你@Bob添加了一個有效的* scons *示例。 – karlphillip 2011-05-25 20:05:29