LibCurl aan het werk krijgen met Visual Studio 2013

Ik heb problemen om LibCurl te laten werken met Visual Studio 2013. Ik heb de huidige versie (curl-7.33.0) gedownload en geprobeerd de instructies te volgen die ik op deze site heb gevonden: LibCurl gebruiken met Visual 2010

Maar ik kan curllib.libniet vinden in de map die ik heb gedownload. En ik krijg nog steeds foutmeldingen:
voer hier de afbeeldingsbeschrijving in

Na zoeken op internet voor meer hulp. Ik krijg nu deze foutmeldingen. Er lijkt een probleem te zijn met het linken naar libcurl.lib?

voer hier de afbeeldingsbeschrijving in

Dit is wat ik heb geconfigureerd:
voer hier de afbeeldingsbeschrijving in


voer hier de afbeeldingsbeschrijving in

In /lib heb ik libcurl.liben libcurl.dll


UPDATE

Ik heb deze release voor Win32 MSVC gedownload: http://curl.haxx.se/download. html#Win32
Na het toevoegen van de libcurl-bibliotheken en het succesvol compileren, krijg ik nu deze foutmelding:

The application was unable to start correctly (0xc000007b). Click OK to close the application.

Hier is de voorbeeldcode die ik probeer uit te voeren:

#include <iostream>
#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;
}

DEFINITIEVE UPDATE

Ik geloof dat ik LibCurl nu met Visual Studio 2013 heb laten werken. Volharding ftw!
Hoewel ik, na urenlang proberen om deze foutmeldingen op te lossen, een beetje aarzelend ben om te zeggen dat alles nu goed werkt. Daarom zet ik een premie op deze vraag om duidelijke en beknopteinstructies te krijgen om LibCurl te laten werken met Visual Studio 2013.

Dit is wat ik deed om het werkend te krijgen:

  1. Download eerst het Win32 MSVC-pakket hier: http://curl.haxx. se/download.html#Win32
    Laten we voor deze instructies zeggen dat je hebt gedownload naar C:\LibCurl

  2. Start een nieuw project in Visual Studio. Ga naar Project|Projecteigenschappen|VC++ Directory’s|Include Directories|
    Voeg het pad toe aan de include-map in het gedownloade pakket. (C:\LibCurl\include)

  3. Ga vervolgens naar Project|Projecteigenschappen|Linker|Algemeen|Extra bibliotheekmappen|
    Voeg het pad toe aan de lib-map. (Waar curllib.dll zich bevindt)

  4. Ga vervolgens naar Project|Projecteigenschappen|Linker|Invoer|Extra afhankelijkheden|
    En voeg curllib.lib

  5. toe

  6. Als u nu een testprogramma compileert, krijgt u waarschijnlijk de melding dat libsasl.dll ontbreekt. U moet dit bestand downloaden en in dezelfde map plaatsen als uw build.
    Ik heb 7-Zip gebruikt om libsasl.dlluit OpenLDAP voor Windowste extraheren. OpenLDAP voor Windows

Dit is het resultaat van mijn testcode van hierboven:
voer hier de afbeeldingsbeschrijving in


Antwoord 1, autoriteit 100%

Veel van deze instructies zijn verouderd omdat ze het pakket win32-ssl-devel-msvcvoor curl aanbevelen, dat niet meer bestaat.

Met de volgende instructies kunt u libcurl bouwen met alleen:

  • Visual Studio 2013
  • curl generieke bron-tarball (getest op curl 7.44.0).

A. Statische bibliotheek van libcurl bouwen

  1. Download de nieuwste curl algemene bronvan: http://curl. haxx.se/latest.cgi?curl=tar.gz
  2. Pak de bron uit naar een lokale map (we gebruiken C:\libcurl)
  3. Open een opdrachtprompt
  4. "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"Om uw VC-omgevingsvariabelen te initialiseren (pas indien nodig uw VS 2013-installatiemap aan)
  5. cd C:\libcurl\winbuild
  6. nmake /f Makefile.vc mode=static VC=12
  7. De build zou moeten verschijnen in C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl

B. Link tegen libcurl in Visual Studio

  1. Klik in Visual Studio met de rechtermuisknop op uw project in Solution Explorer en klik vervolgens op “Eigenschappen”
  2. Configuratie-eigenschappen > C/C++ > Algemeen > Extra include-directories: voeg C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
  3. toe

  4. Configuratie-eigenschappen > C/C++ > Preprocessor > Preprocessor-definities: voeg CURL_STATICLIB
  5. toe

  6. Configuratie-eigenschappen > Linker > Algemeen > Extra bibliotheekmappen: voeg C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
  7. toe

  8. Configuratie-eigenschappen > Linker > Invoer > Aanvullende afhankelijkheden: voeg libcurl_a.lib
  9. toe

C. Bel libcurl vanuit uw project

Het volgende voorbeeld toont een aanroep naar libcurl:

#include "stdafx.h"
#include <curl/curl.h>
void main(int argc, char* argv[])
{
    CURL *curl = curl_easy_init();
    if (curl) printf("curl_easy_init() succeeded!\n"); 
    else fprintf(stderr, "Error calling curl_easy_init().\n");
}

Antwoord 2, autoriteit 18%

Dat zou ik in een opmerking willen zeggen, maar het ontbreekt me aan punten.
U hoeft geen .dll-bestand naar uw programma-uitvoeringscatalogus te kopiëren.
Ga naar Project | Vastgoed | Configuratie-eigenschappenen in regel Envrionmentschrijven: PATH=$(ExecutablePath)$(LocalDebuggerEnvironment).

Vanaf nu moeten alle .dll’s uit elke catalogus die u vermeldt in Project|Project Properties|VC++ Directories|Binarybruikbaar zijn zonder ze te kopiëren.

De rest is precies zoals je hebt geschreven.


Antwoord 3, autoriteit 17%

De gemakkelijkste manier om dit te doen die ik heb gevonden, is ervoor te zorgen dat nuget is geïnstalleerd.

http://www.nuget.org/

Maak vervolgens uw project.

Ga dan naar http://www.nuget.org/packages/curl/en volg de instructies die is om naar de pakketbeheerconsole te gaan en PM> Install-Package curl

Als je dan zoekt naar de packages directory in je project directory, dan vind je de include-bestanden en de bibliotheekbestanden. Merk op dat er een versie is voor Visual Studio 110, niet 120, maar omdat libcurl een C-bibliotheek is, kunt u deze gebruiken met Visual Studio 2013. Zorg ervoor dat de directory include en lib zijn opgegeven onder de Visual C++-directory’s in projecteigenschappen.

Zorg ervoor dat je de volgende bestanden hebt als toevoeging aan de linker
libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;


Antwoord 4, autoriteit 14%

Een andere manier om curl/libcurl te gebruiken is te bouwen met CMakev2.8.12+ (ervan uitgaande dat git al is geïnstalleerd op uw computer)

Open cmd-venster en verander dir naar de juiste map

git clone https://github.com/bagder/curl.git
mkdir msbuild
cd msbuild
cmake ..\curl -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX=C:\curl.vc12 -DCURL_STATICLIB=ON
< ... lots of output here ... >

Open gegenereerde CURL.sln in Visual studio en bouw het.

CMake-opties die ik in het voorbeeld gebruik

-G selecteert build-generator. In ons geval Visual Studio 2013 64 bit target

-DCMAKE_INSTALL_PREFIX – biedt hoofdmap waar doelen moeten worden geïnstalleerd

-DCURL_STATICLIB=ON – genereert build voor statische bibliotheek

Na het bouwen van het installatiedoel, vindt u bin/include/lib-mappen in C:\curl.vc12

Geef dat pad naar uw oplossing en bouw uw code met curl lib.


Antwoord 5, autoriteit 7%

Ik heb geprobeerd het helemaal opnieuw te doen met VS2012 (ik heb 2013 niet) en het werkt perfect.

Dus ik weet niet zeker wat je probleem is, maar:

  • Zorg ervoor dat u het juiste archief downloadt.
  • Probeer de cURL-map op een pad zonder spatie te plaatsen.
  • Als je iemand kent die VS2012 of ouder gebruikt, probeer dan je code met dezelfde include en lib en kijk of het werkt.
  • Plak een minimaal werkend voorbeeld van je code zodat ik het kan testen.

Antwoord 6, autoriteit 6%

Dit is een beetje laat, maar voor degenen die nog steeds problemen hebben, deze methode werkte het beste voor mij:

  1. Voeg VS toe aan het systeem PATH:
    Bijvoorbeeld: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin.
  2. Download huidige curl-X.zip van http://curl.haxx.se/download.htmlen pak het uit.
  3. Open de opdrachtregel op curl-X/winbuild.
  4. Bel vcvars32.bat.
  5. Bel nmake /f Makefile.vc mode=static VC=12.
  6. Ga naar curl-X/builds/libcurl-XXX.

Daar vind je de include en een libcurl_a.lib.
Deze lib werkt prima voor mij.
Vergeet niet om -DCURL_STATICLIBte definiëren wanneer u uw code compileert met deze lib.


Antwoord 7, autoriteit 4%

Voor Visual Studio 2017, de stappen in linkwerkte voor mij. In het geval dat de link verloopt of specifiek voor degenen die het libcurl-zipbestand downloaden in plaats van te klonen vanaf GitHub, zal ik de stappen hier noteren.

  1. Stel omgevingsvariabelen in met “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat” x64. Als de opdracht is gelukt, ziet u een bericht met de tekst Environment initialized for 'x64'

  2. Download en pak het gecomprimeerde libcurl-bestand uit van download libcurl. Ik heb het bestand .zipgebruikt.

  3. cdnaar de map winbuildin de uitgepakte libcurl-map.
  4. Voer nmake /f Makefile.vc mode=dll MACHINE=x64uit om te bouwen. Raadpleeg voor meer informatie over build-opties het BUILD.WINDOWS-tekstbestand in de map winbuild.
  5. Ga één directoryniveau omhoog en cdnaar de map buildsom de gecompileerde bestanden te vinden.

Het allerbeste!


Antwoord 8, autoriteit 3%

Het probleem is dat de doelen voor de standaard VS2013-platformtools niet zijn ingesteld in de NuGet-pakketten. Daarom werkt het in VS2012 maar niet in VS2013. Ik heb handmatig vervangende doelenbestanden gemaakt. Instructies en downloaden:

https://github.com/evoskuil/curl-nuget-targets


Antwoord 9, autoriteit 3%

Download de curl v7.37.0-broncode en gebruik de meegeleverde Visual Studio-projectbestanden.

Ik heb de afgelopen weken mijn eigen persoonlijke projectbestanden, die waren gebaseerd op de originele VC6-bestanden, opgepoetst en aan de repository toegevoegd.

.dsw / .dsp (VC6), .sln / .vcproj (VC7, VC7.1, VC8 en VC9 evenals .sln / .vcxproj (VC10, VC11 en VC12) bestanden zijn beschikbaar voor zowel DLL als Static Bibliotheekbouwt met ondersteuning voor OpenSSL en Windows SSPI / SChannel in zowel Win32- als x64-configuraties.


Antwoord 10, autoriteit 3%

Ik heb een gemakkelijke manier gevonden om het werkend te krijgen in VC++ met het nieuwste pakket. Ik volgde in feite de stappen in libcurl gebruiken in Visual Studio. De libcurl en VC++ zijn erg oud in de instructie.

Download eerst het ZIP-bestand op de downloadpagina https://curl.haxx.se/download.htmlHet ZIP-pakket is https://curl.haxx.se/download/ curl-7.50.1.zip

Ga naar projecten-> Windows\VC10 (of uw versie van VC)\lib\libcurl.sln, open het project in VC++.

Bouw het project in DLL Release. DLL-foutopsporing werkt niet op mijn VC++.

Ga naar build\Win32\VC10\DLL Release, u kunt de lib- en dll-bestanden vinden die in de vorige stap zijn gegenereerd.

Maak een nieuwe map met de mappen include en lib. Kopieer de libcurb.dll en libcurb.lib wat zich in de DLL Release-map bevindt naar de nieuwe\lib. Kopieer alles in curl-7.50.1\include naar nieuwe\include map.

C++ Eigenschappen -> Configuratie-eigenschappen -> VC++ Directories, voeg new\include toe aan Include Directories, new\lib aan Library Directories; voeg nieuwe\lib toe aan Linker -> Algemeen -> Extra bibliotheekmappen, voeg libcurl.lib toe aan Linker -> Invoer -> Aanvullende afhankelijkheden

Het lijkt erop dat ik het dll-bestand in dezelfde map met het uitvoerbare bestand moet plaatsen.

Het zou moeten werken.

Other episodes