2010-03-05 55 views
0

我正在嘗試編寫一個簡單的curl程序來檢索VC++ 8.0中的網頁。爲MSVS設置cURL庫

#include <stdio.h> 
#include <curl.h> 

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

    curl = curl_easy_init(); 
    if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se"); 
    res = curl_easy_perform(curl); 
     /* always cleanup */ 
    curl_easy_cleanup(curl); 
    } 
    return 0; 
} 

我添加了include和庫路徑到cURL include和lib目錄。它符合,但是當我嘗試進入調試模式時,在處理加載期間拋出了未處理的不可持續的STATUS_DLL_NOT_FOUND異常,並且代碼以-1073741515(0xc0000135)退出。

回答

1

如果您在調試模式之外運行它,它按預期工作嗎?或者是否發生同樣的錯誤?

如果它在調試模式之外不工作,您的應用程序無法找到dll。

另一個問題,你是否想從源代碼編譯libcurl以及你的項目,還是將它用作外部庫?

如果您使用的是源代碼,您可能需要編譯整個解決方案,以便編譯libcurl。

如果您正在使用外部庫,請嘗試將dll放在應用程序的工作目錄中(它無法找到它)。

+0

不,它根本不起作用。我正在使用外部curllib.lib來鏈接項目。我試圖把curlib.dll,但它仍然無法正常工作。 – cpx

+0

我不認爲這是一個鏈接問題,因爲你可以將它編譯成可執行文件。 只是一個猜測...沒有curllib.dll有其他依賴?我認爲你正確地找到curllib.dll,ut curllib.dll本身正在尋找其他DLL來引用。特別是如果您使用的版本是SSL – maranas

+0

是的,我認爲它需要像libssl32.dll這樣的其他DLL。但我也下載了一個沒有SSL的版本,它只附帶一個DLL,它也不適用於我。我需要將它指定爲延遲加載的DLL嗎? – cpx

1

使用依賴關係walker來確定哪個.dll沒有被加載,然後將它複製到你的路徑的某個地方或者你的程序所在的同一個文件夾中。

+0

依賴walker報告CURLLIB.DLL沒有找到,我下載這個版本的libcurl爲MSVS http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip,幷包括頭和庫路徑。我不知道爲什麼它不能鏈接到DLL。 – cpx

+0

只要將curllib.dll複製到c:\ windows \ system32並再次測試即可。如果仍然失敗,或許您已經使用了另一個版本的.dll,請確保您的標題和您的.dll屬於相同的版本。 – Ismael

+0

將curllib.dll添加到c:\ windows \ system32後。有兩個錯誤。 IESHIMS.DLL - 錯誤:由於隱式依賴模塊中缺少導出功能,至少有一個模塊具有未解析的導入。 WER.DLL - 警告:至少找不到一個延遲加載依賴項模塊。 – cpx

0

求解! 閱讀了一堆論壇後。真正的解決方案如Ismael所述。謝謝哥們!

ERROR:找不到 .... ..符號等等等等 調試器::未處理的不可繼續STATUS_DLL_NOT_FOUND異常被處理負荷 該程序過程中引發「[3936] VTools.exe:母語」已退出與代碼-1073741515(0xc0000135)。

說明:: 這種情況發生時的dll的不是由Visual Studio,這顯然不是由Visual Studio中指出發現一個

解決方案::在我來說,我已經cutil32.dll失蹤,所以我不得不將其複製到C:/ Windows/system32文件夾。 搞清楚哪個dll丟失真的很難(我討厭這個MSFT)。 反正下載依賴walker和File->打開可執行文件(Debug或Release)。 運行它,你會發現什麼DLL丟失。 在我的情況下,這些文件丟失了CUTIL32.DLL,MSVCR80.DLL,MSJAVA.DLL。 複製CUTIL32.dll解決了問題到system32文件夾。祝你好運!!