40 Stimmen

Unaufgelöste Symbole beim Linken eines Programms mit libcurl

Ich weiß, dies ist Programmierung Fragen, aber ich bin nur frustriert versuchen, herauszufinden, was ich falsch mache

Ich verwende Visual Studio 2010 und folgte alle Schritte hier: http://curl.haxx.se/libcurl/c/visual_studio.pdf

Wenn ich versuche, meine Lösung zu kompilieren, erhalte ich immer wieder 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;
}

109voto

stoiczek Punkte 1255

Ich habe die statische Version von libcurl verwendet, und um mein Programm richtig zu verlinken, musste ich eine Definition hinzufügen:

CURL_STATICLIB

um die Konfiguration meines Projekts zu erstellen.

26voto

cdonts Punkte 8818

Neben der Definition von CURL_STATICLIB war es für mich auch notwendig, die folgenden Abhängigkeiten zu verknüpfen (einschließlich libcurl.lib o libcurld.lib ):

  • Ws2_32.lib
  • Wldap32.lib

6voto

wayne Punkte 85

Ich bin auf ein ähnliches Problem gestoßen - ich habe festgestellt, dass ich auf den 64-Bit-Speicherort von libcurl.lib verwiesen habe. Ändern Sie das Link-Verzeichnis auf die 32-Bit-Speicherort und das Projekt perfekt kompiliert.

5voto

BigChief Punkte 1230

Dies funktionierte für mich auf VS2017 - x86 Release/Debug - MFC Statische Bibliothek

Öffnen Sie die Projekteigenschaften und überprüfen Sie Folgendes

  • C/C++ - Präprozessor - Präprozessor-Definitionen - CURL_STATICLIB hinzufügen

  • Linker - Eingabe - Zusätzliche Abhängigkeiten - Hinzufügen (CTRL+C)

ws2_32.lib

Normaliz.lib

Crypt32.lib

Wldap32.lib

libcurl_a.lib (libcurl_a_debug.lib für die Debug-Konfiguration)

  • C/C++ - Allgemein - Zusätzliche Include-Verzeichnisse - Include hinzufügen Ordner zu Header-Dateien

4voto

Willi Ballenthin Punkte 6248

Es sieht so aus, als ob die Bibliotheken nicht erfolgreich gelinkt werden. Stellen Sie sicher, dass im Bibliotheksverzeichnis der vollständige Pfad zur libcurl dll angegeben ist. Stellen Sie außerdem sicher, dass diese Bibliothek tatsächlich zu Ihrem Projekt hinzugefügt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X