libcurl verwenden



  • Ich habe vor für mein Projekt libcurl zu verwenden.
    Ich nutze Microsoft Visual Studio als IDE.

    Ich habe mir die neuste Version(curl 7.21.7) gedownloaded und habe dann aus dem "lib" ordner die library erstellt. Einmal als Debug(libcurld.lib) und einmal als Release(libcurl.lib) Version.

    Danach habe ich die beiden lib Dateien in diesen Ordner kopiert: "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib" und den curl Ordner der auch in dem .gz Archiv war hab ich in diesen Ordner: "C:\Program Files\Microsoft Visual Studio 10.0\VC\include" kopiert.

    Wenn ich jetzt ein neues Projekt erstelle und das Beispiel nutze bekomm ich immer linker fehler:

    #ifdef _DEBUG
    #pragma comment(lib, "libcurld.lib")
    #else
    #pragma comment(lib, "libcurl.lib")
    #endif
    
    #include <stdio.h>
    #include <curl/curl.h>
    
    int main(int argc, char *argv[])
    {
    	CURL *curl;
    	CURLcode res;
    
    	curl = curl_easy_init();
    	if(curl) 
    	{
    		curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.de");
    		res = curl_easy_perform(curl);
    
    		/* always cleanup */ 
    		curl_easy_cleanup(curl);
    	}
    	return 0;
    }
    

    Woran kann das liegen? Hab ich etwas vergessen? Nutze zum ersten mal libcurl!



  • Was für Linker Errors? Post mal 1:1 die Fehlermeldung.

    Ansonsten klingt dein Vorgehen OK.



  • Du hast vergessen, die Linkerfehler mitzuteilen.



  • Ups, vergessen 😃 hier:

    1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------
    1>Der Buildvorgang wurde am 07.08.2011 21:15:41 gestartet.
    1>PrepareForBuild:
    1>  Das Verzeichnis "C:\Users\Domenic\Desktop\Test\Debug\" wird erstellt.
    1>InitializeBuildStatus:
    1>  "Debug\Test.unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
    1>ClCompile:
    1>  main.cpp
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_cleanup" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_perform" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_setopt" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_init" in Funktion "_main".
    1>C:\Users\Domenic\Desktop\Test\Debug\Test.exe : fatal error LNK1120: 4 nicht aufgelöste externe Verweise.
    1>
    1>Fehler beim Erstellen
    


  • Du könntest zu Testzwecken mal die #pragma comment(lib, ...) weglassen und stattdessen die libs in den Linker Settings des Projekts eintragen.



  • Klappt leider auch nicht. 😕



  • Hast Du die IDE mal neu gestartet?



  • Ja, geht leider auch nicht.
    Ich frag mich echt woran es liegen kann! 😕 😕 😕 😕 😕 😕



  • Schau mal, ob die Symbole in der Lib drin stehen. Evtl hast du die falsch erstellt.



  • Schau mal, ob die Symbole in der Lib drin stehen. Evtl hast du die falsch erstellt.

    Mh, versteh ich nicht ganz 😃 Wie meinst du mit nachschauen?



  • Oh mann 😡
    Ich kriegs einfach nicht hin... Sonnst keiner irgend ne Idee? 😕



  • Hast Du libcurl selbst gebuildet oder die Binaries heruntergeladen?
    Wenn Du die Binaries heruntergeladen hast, welche? Die MSVC?
    Wenn ja, mit was buildest Du dein Programm (MSVC 2010) und mit welchem MSVC sind die Binaries gebuildet?

    Wenns nicht zusammenpasst gibts Probleme.

    Simon

    [EDIT]
    Habe gerade gesehen, dass Du die libs selbst gebuildet hast.

    [EDIT2]
    Wie hast Du es gebuildet?

    [EDIT3]
    Ich habe kurz libcurl gebuildet (als statische Libs), deine Applikation kompiliert und dieselben Linker Errors erhalten wie Du.

    [EDIT4]
    Hast Du das beachtet?
    http://curl.haxx.se/docs/faq.html#Link_errors_when_building_libcur



  • [EDIT3]
    Ich habe kurz libcurl gebuildet (als statische Libs), deine Applikation kompiliert und dieselben Linker Errors erhalten wie Du.

    Danke das du dir die Zeit dafür genommen hast.
    Woran kann das wohl liegen, dass es nicht funktioniert.
    Mhh... Dann bin ich wohl gezwungen cURLpp zu nutzen obwohl mir das eher weniger gefällt. 😞



  • Der Link war mir noch unbekannt.

    If you get linker error like "unknown symbol __imp__curl_easy_init ..." you have linked against the wrong (static) library. If you want to use the libcurl.dll and import lib, you don't need any extra CFLAGS, but use one of the import libraries below.

    Wie muss ich das verstehen, also soll ich die library statisch erstellen jeweils als Debug und als Release Version. Aber was meinen die mit CFLAGS? o.O Noch nie gehört. Scheint doch nicht so einfach zu sein.


Log in to reply