Wenn ich versuche, meine Lösung zu kompilieren, erhalte ich immer diesen Fehler:
1>------ Build started: Project: LibCurl, Configuration: Debug Win32 ------
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main
1>C:\Users\Kyle\Documents\Visual Studio 2010\libcurl\VisualStudio\LibCurl\Debug\LibCurl.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Quelle:
// LibCurl.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
Stellen Sie sicher, dass Sie die Schritte 4.3.2 und 4.3.3 aus dem verlinkten PDF ausgeführt haben. Sie erhalten einen Linker-Fehler, was bedeutet, dass die Datei nicht verlinkt wird libcurl.lib.
– Jesse Beder
14. November 2010 um 8:43 Uhr
Danke Jesse. Ich werde die Schritte langsamer wiederholen und sehen, warum es nicht verknüpft ist. Danke für die Hilfe!
– Kyle
14. November 2010 um 9:02 Uhr
Ich habe die statische Version von libcurl verwendet, und um mein Programm richtig damit zu verknüpfen, musste ich eine Definition hinzufügen:
CURL_STATICLIB
um die Konfiguration meines Projekts zu erstellen.
Dies ist wahrscheinlich eines der häufigsten Probleme: Wenn Sie libcurl als STATIC-Bibliothek verwenden, müssen Sie CURL_STATICLIB nicht nur im Curl-Projekt definieren, sondern auch in dem Projekt, in dem Sie es verwenden möchten.
– Peter K
29. Oktober 2012 um 8:58 Uhr
Ein weiterer interessanter Punkt, den ich gerade getroffen habe: Sie können es im Hauptprojekt definieren und vergessen, es in einem anderen vcproj zu erwähnen, das Sie verwenden.
– Dmitri Kotschkin
11. Februar 2013 um 16:36 Uhr
Vielen Dank. Gehen Sie zu vc++ Projekteinstellungen | c++ | Präprozessor und fügen Sie die CURL_STATICLIB zu den Präprozessordefinitionen hinzu und es funktioniert
– Silbermond
22. Februar 2015 um 10:54 Uhr
Sie haben mir gerade eine Menge Arbeit und ein paar Haare erspart, die ich sonst ausgerissen hätte
– Rick
4. Juni 2015 um 6:13 Uhr
Fällt es nur auf MSVC an?
– Triclosan
17. Juli 2015 um 13:29 Uhr
Außer zu definieren CURL_STATICLIBfür mich war es auch notwendig, die folgenden Abhängigkeiten (einschließlich libcurl.lib oder libcurld.lib):
Ws2_32.lib
Wldap32.lib
Definieren CURL_STATICLIB hat meinen Speck gerettet! Vielen Dank!
– T4cC0re
30. Mai 2017 um 18:06 Uhr
Ich hatte mehrere weitere fehlende Abhängigkeiten, diese Antwort hat mir geholfen stackoverflow.com/questions/50477484/…
– Stan
16. Oktober 2020 um 10:23 Uhr
Ich bin auf ein ähnliches Problem gestoßen – ich habe festgestellt, dass ich auf den 64-Bit-Speicherort von libcurl.lib verwiesen habe. Das Link-Verzeichnis wurde auf den 32-Bit-Speicherort geändert und das Projekt wurde perfekt kompiliert.
Sieht so aus, als würden die Bibliotheken nicht erfolgreich verknüpft. Stellen Sie sicher, dass das Bibliotheksverzeichnis so eingestellt ist, dass es den vollständigen Pfad zur libcurl-DLL enthält. Stellen Sie außerdem sicher, dass diese Bibliothek tatsächlich zu Ihrem Projekt hinzugefügt wird.
Nach vielen Ideen und Konfigurationen habe ich das Problem gelöst, indem ich Folgendes hinzugefügt habe:
#pragma comment(lib, "lib/libcurl_a.lib")
wo libcurl_a.lib ist der Name der Curl-Lib-Datei und lib ist der Ordner, der es enthält.
Vielen Dank. Das hat bei mir funktioniert! Fügte es zu einer der Header-Dateien hinzu. CURL_STATICLIB wurde in diesem Fall nicht benötigt, ich verwende übrigens meine selbst kompilierte Version von curl 7.70.0 mit: curl-7.70.0\winbuild> nmake /f Makefile.vc mode=dll. Verwenden Sie in diesem Fall: #pragma comment(lib, “lib/libcurl.lib”)
– Eddz
20. Mai 2020 um 10:51 Uhr
13944000cookie-checkNicht aufgelöste Symbole beim Verknüpfen eines Programms mit libcurlyes
Stellen Sie sicher, dass Sie die Schritte 4.3.2 und 4.3.3 aus dem verlinkten PDF ausgeführt haben. Sie erhalten einen Linker-Fehler, was bedeutet, dass die Datei nicht verlinkt wird
libcurl.lib
.– Jesse Beder
14. November 2010 um 8:43 Uhr
Danke Jesse. Ich werde die Schritte langsamer wiederholen und sehen, warum es nicht verknüpft ist. Danke für die Hilfe!
– Kyle
14. November 2010 um 9:02 Uhr