cURL Bibliothek einfügen
-
Hallo,
ich hoffe, dass mir hier jemand helfen kann, bin langsam am verzweifeln. Versuche seit 3 Tagen eine cURL Bibliothek einzubinden. Währe echt super, wenn sich hier jemand findet, der mir helfen könnte.
Als erste möchte ich grob die Randbedingungen wiedergeben.
Meine Erfahrungen in C bzw. C++ belaufen sich auf 2 Semester Informatikvorlesung im Studium. Grundlagen sind vorhanden, spezielleres Wissen fehlt leider noch.
Ich verwende die Entwicklungsumgebung VisualStudio 2010 auf dem Betriebssystem Windows 7.In der Entwicklungsumgebung habe ich unter Visual C++ eine Win32-Konsolenanwendung erstellt. Der Programmiercode ist folgender:
#include "stdafx.h" #include <windows.h> #include <stdio.h> #include <curl/curl.h> int _tmain(int argc, _TCHAR* argv[]) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/"); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } system("pause"); return 0; }
Leider habe ich vorher noch nie eine Bibliothek eingebungen also hielt ich mich streng an eine Anleitung im Internet.
http://curl.haxx.se/libcurl/c/visual_studio.pdf
Gedownloaded wurde die Bibliothek
MSVC 7.19.3 von Frederic Elbin unter Win32 - MSVC.
http://curl.haxx.se/download.htmlDiese enthielt die Datei curllib.dll, curllib.lib sowie die notwendigen include Dateien.
Ich gab in der Entwicklungsumgebung die Pfäde zu diesen Dateien an und fügte die curllib.lib ein.Sobald ich debuggen möchte öffnet sich die Konsole und beendet sich sofort mit der Fehlermeldung 0xc0150002 in der Ausgabe erscheint der Text:
Der Thread 'Win32-Thread' (0x100c) hat mit Code -1072365566 (0xc0150002) geendet.
Das Programm "[26212] MyApplication.exe: Systemeigen" wurde mit Code -1072365566 (0xc0150002) beendet.Daraufhin wurde mir geraten, den Dependency Walker zu installieren um zu schauen, ob es Fehler mit den dlls gibt.
http://www.dependencywalker.com/Als ich dies tat wurde mir angezeigt, dass mehrere dlls fehlen.
Dies waren die ddls: ssleay32.dll, openldap.dll und libeay32.dll
welche sich auch in dem gedownloadeten Paket befanden sowie die ddls:
msvcr90d.dll und ieshims.dll welche ich aus dem Internet herrunterlud.Selbst nachdem ich all diese DLLs in den entsprechenden Pfad einfügte blieb die Fehlermeldung bestehen. Hat jemand eine Idee, woran der Fehler liegen könnte. Währe echt super und bitte verzeiht mir, wenn ich Anfängerfehler mache oder diverse Fachbegriffe verwechsel.
-
-> Compiler Forum?
- - -
Mit installiertem Visual Studio fehlt dir die msvcr90d.dll? Hm..
Ich kenne ja die externen Abhängigkeiten von cURL nicht, aber eigentlich sollte Folgendes reichen:
- cURL mit gleichen Einstellungen wie bei deinem Projekt builden. (Properties - C/C++ - Code Generation)
- .lib In das C:\Program Files\Microsoft Visual Studio 10.0\VC\lib Verzeichnis kopieren.
- .dll in dein Projektverzeichnis kopieren.
-
cooky451 schrieb:
-> Compiler Forum?
- - -
Mit installiertem Visual Studio fehlt dir die msvcr90d.dll? Hm..
Ich kenne ja die externen Abhängigkeiten von cURL nicht, aber eigentlich sollte Folgendes reichen:
- cURL mit gleichen Einstellungen wie bei deinem Projekt builden. (Properties - C/C++ - Code Generation)
- .lib In das C:\Program Files\Microsoft Visual Studio 10.0\VC\lib Verzeichnis kopieren.
- .dll in dein Projektverzeichnis kopieren.Er hat VS2010 installiert und diese liefert keine msvcr90d.dll. AFAIK wird die msvcr90d.dll von VS 2008 mitgeliefert.
-
Compiler Forum hätte vielleicht etwas mehr Sinn gemacht. Hatte auch extra noch geschaut, wo ich das am besten Poste. Habe aber leider den Bereich Compiler übersehen.
Wenn ich die msvcr90d.dll nicht in das Projektverzeichnis kopiere bekomme ich diese Meldung beim Dependency Walker.
http://s1.directupload.net/images/110710/pkkvkvyr.pngKönntest du bitte diesen Punkt nocheinmal etwas genauer erläutern?
cooky451 schrieb:
- cURL mit gleichen Einstellungen wie bei deinem Projekt builden. (Properties - C/C++ - Code Generation
Soll ich die cURL Daten nochmal extra kompilieren oder wie meinst du das?
Bei Properties - C/C++ - Code Generation bekomme ich eine Auswahl zwischen
/MT
/MTd
/MD
/MDd
-
Redegle schrieb:
..
oO cURL scheint ja wirklich ein paar mehr Abhängigkeiten zu haben, ich guck mir das mal an. (Jetzt weiß ich auch, warum ich die lib immer gemieden habe..
)
Edit:
Der möchte von mir irgendeine libsasl.dll haben, dafür bin ich jetzt zu faul, die ist ja nicht mal dem Paket beigelegt..
-
cooky451 schrieb:
Redegle schrieb:
..
Edit:
Der möchte von mir irgendeine libsasl.dll haben, dafür bin ich jetzt zu faul, die ist ja nicht mal dem Paket beigelegt..Ich bin dir für die Hilfe sehr dankbar also daran solls nicht scheitern.
Ich habe mal alle DLLs hochgeladen.
-
Ok, ehm. Wo genau war jetzt noch gleich dein Problem?
Du lädst: http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip
Packst alle .lib Dateien nach C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
- die Header nach C:\Program Files\Microsoft Visual Studio 10.0\VC\include
- alle .dll's in dein Programmverzeichnis.Und schreibst in dein Programm
#pragma comment (lib, "curllib_static.lib") // kannst hier natürlich nehmen was du willst. #pragma comment (lib, "libcurl_imp.lib")
-
Hat es bei dir Funktioniert?
Bei mir kommt dann nämlich folgende Fehlermeldung
http://s7.directupload.net/images/110710/us7eoz3g.png
-
Bei mir läuft es..
-
Das ist jetzt gut denn es funktioniert und doch schlecht ich weiß nämlich nicht warum es bei mir nicht funktioniert.
Also das Programm sieht bei dir wie folgt aus?
#include "stdafx.h" #include <windows.h> #include <stdio.h> #include <curl/curl.h> #pragma comment (lib, "curllib_static.lib") // kannst hier natürlich nehmen was du willst. #pragma comment (lib, "libcurl_imp.lib") int _tmain(int argc, _TCHAR* argv[]) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/"); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } system("pause"); return 0; }
Hast du bei Eigenschaften - Linker - Eingabe etwas bei Zusätzliche Abhängigkeiten eingefügt?
-
Manchmal hilft das Logging des Make sich genauer anzuschauen. Sprich ob jeder Compiler/Linker-Aufruf korrekt ist.
-
Hast du noch einen Hinweis, wo ich dieses Logging finde?
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Redegle schrieb:
Hast du noch einen Hinweis, wo ich dieses Logging finde?
Arbeite selten mit Visual Studio, aber folgender Link sollte dir weiterhelfen. http://social.msdn.microsoft.com/Forums/en/vcprerelease/thread/eb4c6727-4d39-41b0-9919-f09b73c3b28f
Ich organisiere meine Projekte nur noch über CMake.
-
Habe die Einstellungen mal geändert.
Muss ich irgendetwas bestimmtes beachten?
Die Ausgabe ist nämlich sehr groß geworden.
Lade den Text mal als .txt hoch.Habe übrigens den Laptop frisch formatiert und Visual Studio neu installiert. Fehler tritt immernoch auf.
http://www.file-upload.net/download-3582888/Ausgabe.txt.html
-
Unglaublich.
Es klappt. Ich habe jetzt quasi eine komplette Woche gebraucht um das Programm zum laufen zu bekommen.Jetzt muss mir nur noch jemand erklären warum das so ist.
Sobald ich die curllib.dll aus dem Ordner libcurl-7.19.3-win32-ssl-msvc\lib\Debug einfüge, so wie es in der Anleitung steht dann kommt die Fehlermeldung.
Nehme ich hingegen die curllib.dll aus dem Ordner libcurl-7.19.3-win32-ssl-msvc\ mit einer Größe von 190kB dann klappt alles perfekt.
Ich bekomme sogar angezeigt, welche DLLs fehlen ohne den Dependency Walker benutzen zu müssen.