web-dev-qa-db-fra.com

Amener LibCurl à fonctionner avec Visual Studio 2013

Je ne parviens pas à faire fonctionner LibCurl avec Visual Studio 2013. J'ai téléchargé la version actuelle (curl-7.33.0) et essayé de suivre les instructions trouvées sur ce site: tilisation de LibCurl avec Visual 201

Mais je ne peux pas trouver curllib.lib dans le dossier que j'ai téléchargé. Et je reçois encore des erreurs: enter image description here

Après avoir cherché sur Internet pour plus d'aide. Je reçois maintenant ces messages d'erreur. Il semble y avoir un problème avec la liaison à libcurl.lib?

enter image description here

C'est ce que j'ai configuré: enter image description here


enter image description here

Dans/lib j'ai libcurl.lib et libcurl.dll


[~ # ~] met à jour [~ # ~]

J'ai téléchargé cette version pour MSVC Win32: http://curl.haxx.se/download.html#Win32 Après avoir ajouté les bibliothèques libcurl et compilé avec succès, le message d'erreur suivant s'affiche:

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

Voici l'exemple de code que j'essaie de lancer:

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

MISE À JOUR FINALE

Je pense que LibCurl est maintenant compatible avec Visual Studio 2013. Persistance ftw! Bien que, après avoir passé des heures à essayer de résoudre ces messages d'erreur, je suis un peu hésitant à dire que tout fonctionne bien maintenant. C’est la raison pour laquelle je mets une prime à la disposition de cette question afin d’obtenir des instructions claires et concises pour que LibCurl fonctionne avec Visual Studio 2013.

Voici ce que j'ai fait pour que cela fonctionne:

  1. Tout d’abord, téléchargez le package Win32 MSVC ici: http://curl.haxx.se/download.html#Win32 Pour ces instructions, disons que vous avez téléchargé C:\LibCurl.

  2. Démarrer un nouveau projet dans Visual Studio. Sélectionnez Projet | Propriétés du projet | Répertoires VC++ | Inclure les répertoires | Ajoutez le chemin d'accès au répertoire d'inclusion dans le package téléchargé. (C:\LibCurl\include)

  3. Ensuite, sélectionnez Projet | Propriétés du projet | Éditeur de liens | Général | Répertoires de bibliothèque supplémentaires | Ajoutez le chemin au répertoire lib. (Où se trouve curllib.dll)

  4. Ensuite, sélectionnez Projet | Propriétés du projet | Éditeur de liens | Entrée | Dépendances supplémentaires | Et ajoutez curllib.lib

  5. Maintenant, si vous compilez un programme de test, vous obtiendrez probablement le message indiquant que libsasl.dll est manquant. Vous devrez télécharger ce fichier et le placer dans le même répertoire que votre build. J'ai utilisé 7-Zip pour extraire libsasl.dll de OpenLDAP pour Windows . OpenLDAP pour Windows

Voici le résultat de mon code de test ci-dessus: enter image description here

50
Quaxton Hale

Je dirais cela dans un commentaire, mais je manque de points. Vous n'êtes pas obligé de copier un fichier .dll dans le catalogue d'exécution du programme. Allez dans Projet | Propriétés | Propriétés de configuration et en ligne Envrionment write: PATH=$(ExecutablePath)$(LocalDebuggerEnvironment).

À partir de maintenant, tous les fichiers .dll de tous les catalogues que vous mentionnez dans Projet | Propriétés du projet | Répertoires VC++ | Binary doivent être utilisables sans les copier.

Le reste est exactement comme vous l'avez écrit.

12
Michał

Un grand nombre de ces instructions sont obsolètes car ils recommandent le package win32-ssl-devel-msvc pour curl, qui n'existe plus .

Les instructions suivantes vous permettent de construire libcurl en utilisant seulement:

  • Visual Studio 2013
  • curl générique tarball (testé sur curl 7.44.0).

A. Construire la bibliothèque statique libcurl

  1. Téléchargez la dernière source générique curl à partir de: http://curl.haxx.se/latest.cgi?curl=tar.gz
  2. Extrayez la source dans un répertoire local (nous utiliserons C:\libcurl)
  3. Ouvrir une invite de commande
  4. "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" Pour initialiser vos variables d'environnement VC (ajustez le répertoire d'installation de VS 2013 si nécessaire)
  5. cd C:\libcurl\winbuild
  6. nmake /f Makefile.vc mode=static VC=12
  7. La construction devrait apparaître dans C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl

B. Lien contre libcurl dans Visual Studio

  1. Dans Visual Studio, cliquez avec le bouton droit sur votre projet dans l'Explorateur de solutions, puis cliquez sur "Propriétés".
  2. Propriétés de configuration> C/C++> Général> Répertoires d'inclusion supplémentaires: ajoutez C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
  3. Propriétés de configuration> C/C++> Préprocesseur> Définitions du préprocesseur: add CURL_STATICLIB
  4. Propriétés de configuration> Éditeur de liens> Général> Répertoires de bibliothèque supplémentaires: ajoutez C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
  5. Propriétés de configuration> Éditeur de liens> Entrée> Dépendances supplémentaires: ajoutez libcurl_a.lib

C. Appelez libcurl depuis votre projet

L'exemple suivant montre un appel à 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");
}
70
mtlynch

Le moyen le plus simple de le faire est d’abord de vous assurer que le nuget est installé.

http://www.nuget.org/

Ensuite, créez votre projet.

Ensuite, allez à http://www.nuget.org/packages/curl/ et suivez les instructions à suivre pour accéder à la console du gestionnaire de paquets et tapez PM> Install-Package curl

Si vous recherchez ensuite le répertoire packages dans votre répertoire projet, vous trouverez les fichiers include et les fichiers de bibliothèque. Notez qu'il existe une version pour Visual Studio 110, non pas 120, mais comme libcurl est une bibliothèque C, vous pouvez l'utiliser avec Visual Studio 2013. Assurez-vous que le répertoire include et le répertoire lib sont spécifiés sous les répertoires Visual C++ dans les propriétés du projet.

Assurez-vous que vous avez les fichiers suivants comme entrée supplémentaire dans l'éditeur de liens libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;

12
John Bandela

Une autre façon d'utiliser curl/libcurl est de construire avec CMake v2.8.12 + (en supposant que git est déjà installé sur votre ordinateur)

Ouvre la fenêtre cmd et change le répertoire en dossier approprié

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 ... >

Ouvrez CURL.sln généré dans Visual studio et générez-le.

Options CMake que j'utilise dans l'exemple

-G sélectionne le générateur de construction. Dans notre cas, cible Visual Studio 2013 64 bits

-DCMAKE_INSTALL_PREFIX - fournit le dossier racine dans lequel les cibles doivent être installées

-DCURL_STATICLIB = ON - génère une construction pour la bibliothèque statique

Après la construction de la cible d'installation, vous trouverez les dossiers bin/include/lib dans C:\curl.vc12

Fournissez ces chemins à votre solution et construisez votre code avec curl lib.

10
Sergei Nikulov

J'ai essayé de le faire à partir de zéro avec VS2012 (je n'ai pas 2013) et cela fonctionne parfaitement.

Donc, je ne sais pas quel est votre problème, mais:

  • Assurez-vous de télécharger la bonne archive.
  • Essayez de placer le dossier cURL sur un chemin sans espace.
  • Si vous connaissez quelqu'un qui utilise VS2012 ou une version plus ancienne, essayez votre code avec les mêmes include et lib et voyez si cela fonctionne.
  • Collez un exemple de travail minimal de votre code afin que je puisse le tester.
5
Nil

C'est un peu tard, mais pour ceux qui ont encore des problèmes, cette méthode a fonctionné mieux pour moi:

  1. Ajoutez VS au système PATH:
    Par exemple: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin.
  2. Télécharger le fichier curl-X.Zip actuel à partir de http://curl.haxx.se/download.html et décompressez.
  3. Ouvrir la ligne de commande à curl-X/winbuild.
  4. Appel vcvars32.bat.
  5. Appel nmake /f Makefile.vc mode=static VC=12.
  6. Aller à curl-X/builds/libcurl-XXX.

Là vous trouvez l'inclus et un libcurl_a.lib. Cette lib fonctionne bien pour moi.
N'oubliez pas de définir -DCURL_STATICLIB lorsque vous compilez votre code avec cette bibliothèque.

4
David

Pour Visual Studio 2017, les étapes de lien ont fonctionné pour moi. Au cas où le lien expirerait ou spécifiquement pour ceux qui téléchargent le fichier zip de libcurl au lieu du clonage à partir de GitHub, je noterai les étapes ici.

  1. Définissez les variables d'environnement avec “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat” x64. Si la commande réussit, un message indiquant Environment initialized for 'x64'

  2. Téléchargez et extrayez le fichier compressé libcurl de téléchargez libcurl . J'ai utilisé le .Zip fichier.

  3. cd dans le répertoire winbuild du dossier libcurl extrait.
  4. Courir nmake /f Makefile.vc mode=dll MACHINE=x64 construire. Pour plus d'informations sur les options de construction, veuillez vous référer à BUILD.WINDOWS fichier texte dans le dossier winbuild.
  5. Montez d’un niveau de répertoire et cd dans le dossier builds pour trouver les fichiers compilés.

Bonne chance!

3
swdon

J'ai trouvé un moyen facile de le faire fonctionner dans VC++ en utilisant le dernier package. J'ai essentiellement suivi les étapes de Utilisation de libcurl dans Visual Studio. Libcurl et VC++ sont très anciens dans l’instruction.

Commencez par télécharger le fichier Zip sur la page de téléchargement https://curl.haxx.se/download.html Le package Zip est https://curl.haxx.se/download/curl- 7.50.1.Zip

Accédez à projets-> Windows\VC10 (ou votre version de VC)\lib\libcurl.sln, ouvrez le projet dans VC++.

Construisez le projet dans DLL Release. DLL le débogage ne fonctionne pas sur mon VC++.

Accédez à la version build\Win32\VC10\DLL, vous pouvez trouver les fichiers lib et dll générés à l'étape précédente.

Créez un nouveau dossier, avec les dossiers include et lib. Copiez les fichiers libcurb.dll et libcurb.lib dans le dossier DLL Release dans le nouveau dossier\lib. Copiez tout le contenu de curl-7.50.1\include dans le nouveau dossier\include.

Propriétés C++ -> Propriétés de configuration -> Répertoires VC++, ajoutez new\include to Include Directories, new\lib to Library Directories; ajoutez new\lib dans l'éditeur de liens -> Général -> Répertoires de bibliothèque supplémentaires, ajoutez libcurl.lib dans l'éditeur de liens -> Entrée -> Dépendances supplémentaires

Il semble que je dois mettre le fichier DLL dans le même dossier que le fichier exécutable.

Ça devrait marcher.

2
Daisy

Le problème est que les cibles des outils de la plate-forme VS2013 par défaut ne sont pas définies dans les packages NuGet . C'est pourquoi cela fonctionne dans VS2012 mais pas dans VS2013. J'ai créé manuellement des fichiers cibles de remplacement. Instructions et téléchargement:

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

2
evoskuil

Téléchargez le code source curl v7.37.0 et utilisez les fichiers de projet Visual Studio fournis.

J'ai passé les dernières semaines à peaufiner mes propres fichiers de projet personnels, basés sur les fichiers VC6 d'origine, et à les ajouter au référentiel.

Les fichiers .dsw/.dsp (VC6), .sln/.vcproj (VC7, VC7.1, VC8 et VC9 ainsi que .sln/.vcxproj (VC10, VC11 et VC12) sont fournis pour les deux DLL et les bibliothèques statiques prennent en charge OpenSSL et Windows SSPI/SChannel dans les configurations Win32 et x64.

2
Steve Holme