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:
Na zoeken op internet voor meer hulp. Ik krijg nu deze foutmeldingen. Er lijkt een probleem te zijn met het linken naar libcurl.lib?
Dit is wat ik heb geconfigureerd:
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:
-
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 -
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) -
Ga vervolgens naar Project|Projecteigenschappen|Linker|Algemeen|Extra bibliotheekmappen|
Voeg het pad toe aan de lib-map. (Waar curllib.dll zich bevindt) -
Ga vervolgens naar Project|Projecteigenschappen|Linker|Invoer|Extra afhankelijkheden|
En voeg curllib.lib -
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
toe
Dit is het resultaat van mijn testcode van hierboven:
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
- Download de nieuwste curl algemene bronvan: http://curl. haxx.se/latest.cgi?curl=tar.gz
- Pak de bron uit naar een lokale map (we gebruiken
C:\libcurl
) - Open een opdrachtprompt
"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)cd C:\libcurl\winbuild
nmake /f Makefile.vc mode=static VC=12
- De build zou moeten verschijnen in
C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl
B. Link tegen libcurl in Visual Studio
- Klik in Visual Studio met de rechtermuisknop op uw project in Solution Explorer en klik vervolgens op “Eigenschappen”
- Configuratie-eigenschappen > C/C++ > Algemeen > Extra include-directories: voeg
C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
- Configuratie-eigenschappen > C/C++ > Preprocessor > Preprocessor-definities: voeg
CURL_STATICLIB
- Configuratie-eigenschappen > Linker > Algemeen > Extra bibliotheekmappen: voeg
C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
- Configuratie-eigenschappen > Linker > Invoer > Aanvullende afhankelijkheden: voeg
libcurl_a.lib
toe
toe
toe
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.
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.
- Ik heb versie 7.19.3 gedownload van http://curl .haxx.se/latest.cgi?curl=win32-ssl-devel-msvcomdat het de enige beschikbare versie voor VS is.
- Ik heb de include directory toegevoegd, niet de curl directory zoals hij zegt in de tutorial.
- Ik heb zonder enig probleem een klein speelgoedprojectsamengesteld.
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:
- Voeg VS toe aan het systeem PATH:
Bijvoorbeeld:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
. - Download huidige curl-X.zip van
http://curl.haxx.se/download.html
en pak het uit. - Open de opdrachtregel op
curl-X/winbuild
. - Bel
vcvars32.bat
. - Bel
nmake /f Makefile.vc mode=static VC=12
. - 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_STATICLIB
te 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.
-
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 tekstEnvironment initialized for 'x64'
-
Download en pak het gecomprimeerde libcurl-bestand uit van download libcurl. Ik heb het bestand
.zip
gebruikt. cd
naar de mapwinbuild
in de uitgepakte libcurl-map.- Voer
nmake /f Makefile.vc mode=dll MACHINE=x64
uit om te bouwen. Raadpleeg voor meer informatie over build-opties hetBUILD.WINDOWS
-tekstbestand in de mapwinbuild
. - Ga één directoryniveau omhoog en
cd
naar de mapbuilds
om 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.