#1 14. Dezember 2008 Statische Library einbinden Hallo, ich hab momentan ein kleines Problem. Ich will mit curl (eine Bibliothek für HTTP, FTP etc.) ein Projekt machen, aber es funktioniert nicht ganz. Ich habe im Linker die Dateien angegeben, aber nach dem Kompilieren sagt das Programm immer "Die Anwendung konnte nicht gestartet werden, weil libcurl.dll nicht gefunden wurde." Nur ich will ja gar keine DLL haben?( Ich benutze Code::Blocks und den GCC Compiler(von MinGW). Kann mir jemand sagen was ich falsche mache? Chillikid + Multi-Zitat Zitieren
#2 14. Dezember 2008 AW: Statische Library einbinden Du musst libcurl zu seiner Statischen Lib kompilieren (Das geht in den Projekteigenschaften). Danach einfach dein Programm gegen die lib linken und es sollte klappen. + Multi-Zitat Zitieren
#3 14. Dezember 2008 AW: Statische Library einbinden Naja...so ähnlich hab es ich ja, nur dass ich die libcurl nicht selber zur statischen Lib kompiliert habe sondern die von deren Downloadseite habe. Also die libcurl.a habe ich bereits, er macht nur beim Linken iregnd 'nen Müll, so dass er am Ende trotzdem immer nach der dll sucht... + Multi-Zitat Zitieren
#4 15. Dezember 2008 AW: Statische Library einbinden Naja, die precompilten-Versionen von der libcurl-Seite sind alle dynamisch. Die .a-Datei is nur da, damit der Linker weiß, woher die Verweise zu den Funktionen kommen, die eigentlichen Funktionen sin aber trotzdem in der DLL. Du kommst nich drumrum, libcurl selber zu compilen. Wenn du MSys verwendest, solltest du mit Code: ./configure --disable-shared --enable-static die statischen bibliotheken bauen können. + Multi-Zitat Zitieren
#5 15. Dezember 2008 AW: Statische Library einbinden Soo ich hab das was du gesagt hast jetzt auch endlich hinbekommen, aber funktionieren will es leider trotzdem noch nicht. Ich habe jetzt eine statische Bibliothek hingekriegt, aber jetzt gibt es beim kompilieren meines eigentlochen Projekts Fehler. Ich weiß es nicht, aber vllt. kennst du dich da noch weiter aus? Denn die Fehlermeldungsagt und ich kann damit leider nichts Anfangen...Wäre nett, wenn mir da jemand oder auch du pyro weiterhelfen könnte! Chillikid PS: Ich kann dich leider schon gar nicht mehr Bewerten pyro ^^ + Multi-Zitat Zitieren
#6 15. Dezember 2008 AW: Statische Library einbinden Hm, du hast dein projekt shcon gegen die lib gelinkt oder? Normalerweiße tritt der Fehler auf, wenn man ne Funktion verwendet, die nirgendwo definiert ist und der Linker sie nicht finden kann. Aber wenn du gegen die Lib gelinkt hast, sollte das eigentlich nicht sein. + Multi-Zitat Zitieren
#7 15. Dezember 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 AW: Statische Library einbinden Ich denke schon, ich zeige einfach mal, was ich bisher gemacht habe: main.cpp Code: #include "main.h" using namespace std; int main() { cout << "Initializing Curl..."; CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_WIN32); curl=curl_easy_init(); if(!curl) { cout << "Error\n"; return -1; } cout << "Done\n"; cout << "Setting URL to http://www.google.de..."; curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.de"); cout << "Done\n"; cout << "Setting header-print to 0..."; curl_easy_setopt(curl, CURLOPT_HEADER, 0); cout << "Done\n"; cout << "Setting write function..."; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); cout << "Done\n"; cout << "Setting buffer..."; curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); cout << "Done\n"; cout << "Retrieving data..."; res = curl_easy_perform(curl); curl_easy_cleanup(curl); if(res == CURLE_OK) { cout << "Done\n"; cout << "HTML_Code of http://www.google.com:\n\n"; cout << buffer << endl; } return 0; } // This is the writer call back function used by curl static int writer(char *data, size_t size, size_t nmemb, std::string *buffer) { // What we will return int result = 0; // Is there anything in the buffer? if (buffer != NULL) { // Append the data to the buffer buffer->append(data, size * nmemb); // How much did we write? result = size * nmemb; } return result; } main.h Code: #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #include <iostream> #include <string> #include <curl/curl.h> static std::string buffer; static int writer(char *data, size_t size, size_t nmemb, std::string *buffer); #endif // MAIN_H_INCLUDED Linker + Multi-Zitat Zitieren