2011-08-29 25 views
2

我正在嘗試使用SCons來編譯和鏈接一個簡單的Windows程序。我有兩個需要編譯的文件,httprequest.cpp和curltest.cpp。首先,我想從httprequest。* pp文件中創建一個庫。這些文件依賴於也在我的源代碼中的libcurl.lib庫。Windows鏈接

一旦編譯完成,然後嘗試將curltest.cpp編譯爲一個.exe文件(也依賴於libcurl.lib庫)。不過,我不斷收到這樣的錯誤:

httpreq.lib(httprequest.obj) : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function "public: __thiscall HTTPRequest::HTTPRequest(void)" ([email protected]@[email protected]) 

儘管明確地鏈接到libcurl.lib(我已經證實 - 用納米 - 有__curl_easy_setopt之類可用的方法),我遇到問題時, httpreq.lib嘗試查找libcurl方法。

如何將libcurl.lib鏈接到httpreq庫和curltest可執行文件而沒有問題?

編輯:這是我的SConstruct文件,它在Ubuntu 11.04下構建和鏈接就好了。

httpreq = 'src//httprequest.cpp' 
StaticLibrary('httpreq', httpreq) 
env = Environment(
        CPPPATH = ['#//include//curl', 
           '#//src' 
           ], 

        LIBPATH = ['#//bin', 
           '#//' 
           ], 

        LIBS = ['libcurl', 
          'httpreq' 
          ] 
       ) 
curltest = ['src//curltest.cpp'] 
env.Program('test', curltest) 
+0

聽起來像你正在C++中編譯C頭文件。將頭部包裹在外部「C」 –

回答

1

這似乎是已經在libcurl FAQ回答的問題。

關鍵是要在Windows上使用靜態libcurl庫,您必須在編譯時定義CURL_STATICLIB。