Hacer que LibCurl funcione con Visual Studio 2013

Tengo problemas para que LibCurl trabaje con Visual Studio 2013. Descargué la versión actual (curl-7.33.0) e intenté seguir las instrucciones que encontré en este sitio: Uso de LibCurl con Visual 2010

Pero no puedo encontrar curllib.lib en la carpeta que descargué. Y sigo recibiendo errores: enter image description here

Después de buscar en internet para obtener más ayuda. Ahora recibo estos mensajes de error. Parece haber un problema con el enlace a libcurl.lib?

enter image description here

Esto es lo que he configurado: enter image description here


enter image description here

Dentro / lib tengo libcurl.lib y libcurl.dll


ACTUALIZAR

Descargué esta versión para Win32 MSVC: http://curl.haxx.se/download.html#Win32 Después de agregar las librerías libcurl y comstackr con éxito, ahora recibo este mensaje de error:

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

Aquí está el código de muestra que estoy tratando de ejecutar:

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

ACTUALIZACIÓN FINAL

Creo que ahora tengo LibCurl para trabajar con Visual Studio 2013. Persistencia ftw! Aunque, después de pasar horas tratando de resolver estos mensajes de error, estoy un poco indeciso al decir que todo está funcionando bien ahora. Es por eso que estoy poniendo una recompensa en esta pregunta para obtener instrucciones claras y concisas sobre cómo hacer que LibCurl funcione con Visual Studio 2013.

Esto es lo que hice para que funcione:

  1. Primero, descargue el paquete Win32 MSVC aquí: http://curl.haxx.se/download.html#Win32. Por estas instrucciones, digamos que lo descargó en C: \ LibCurl

  2. Comience un nuevo proyecto en Visual Studio. Vaya a Proyecto | Propiedades del proyecto | Directorios de VC ++ | Incluir directorios | Agregue la ruta al directorio de inclusión dentro del paquete descargado. (C: \ LibCurl \ include)

  3. A continuación, vaya a Proyecto | Propiedades del proyecto | Enlazador | General | Directorios de biblioteca adicionales | Agregue la ruta al directorio lib. (Donde se encuentra curllib.dll)

  4. Luego, vaya a Proyecto | Propiedades del proyecto | Enlazador | Entrada | Dependencias adicionales | Y agrega curllib.lib

  5. Ahora bien, si comstack un progtwig de prueba, probablemente recibirá el mensaje que dice que falta libsasl.dll. Deberá descargar este archivo y colocarlo en el mismo directorio que su comstackción. Utilicé 7-Zip para extraer libsasl.dll de OpenLDAP para Windows . OpenLDAP para Windows

Este es el resultado de mi código de prueba de arriba: enter image description here

Diría eso en un comentario, pero me faltan puntos. No tiene que copiar ningún .dll en el catálogo de ejecución de su progtwig. Ir a Proyecto | Propiedades | Propiedades de configuración y en línea Escritura Envrionment : PATH=$(ExecutablePath)$(LocalDebuggerEnvironment) .

A partir de ahora, todos los .dlls de cualquier catálogo que menciones en Project | Project Properties | VC ++ Directories | Binary deberían poder utilizarse sin copiarlos.

El rest es exactamente como lo escribiste.

Muchas de estas instrucciones están desactualizadas porque recomiendan el paquete win32-ssl-devel-msvc para curl, que ya no existe .

Las siguientes instrucciones le permiten construir libcurl usando solo :

  • Visual Studio 2013
  • curl genérico fuente tarball (probado en curl 7.44.0).

A. Build libcurl biblioteca estática

  1. Descargue la última fuente genérica de Curl desde: http://curl.haxx.se/latest.cgi?curl=tar.gz
  2. Extraiga la fuente a un directorio local ( C:\libcurl )
  3. Abra un símbolo del sistema
  4. "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" Para inicializar las variables de entorno de VC (ajuste el directorio de instalación de VS 2013 según sea necesario)
  5. cd C:\libcurl\winbuild
  6. nmake /f Makefile.vc mode=static VC=12
  7. La comstackción debería aparecer en C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl

B. Enlace contra libcurl en Visual Studio

  1. En Visual Studio, haga clic con el botón derecho en su proyecto en el Explorador de soluciones y luego haga clic en “Propiedades”.
  2. Propiedades de configuración> C / C ++> General> Directorios de inclusión adicionales: agregue C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
  3. Propiedades de configuración> C / C ++> Preprocesador> Definiciones de preprocesador: agregue CURL_STATICLIB
  4. Propiedades de configuración> Enlazador> General> Directorios de biblioteca adicionales: agregue C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
  5. Propiedades de configuración> Enlazador> Entrada> Dependencias Adicionales: add libcurl_a.lib

C. Llama a libcurl desde tu proyecto

El siguiente ejemplo muestra una llamada a libcurl:

 #include "stdafx.h" #include  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"); } 

La forma más fácil de hacer esto que encontré es primero asegurarse de que nuget esté instalado.

http://www.nuget.org/

Luego crea tu proyecto.

Luego vaya a http://www.nuget.org/packages/curl/ y siga las instrucciones para ir a la consola del administrador de paquetes y escriba PM> Install-Package curl

Si luego busca el directorio de paquetes en el directorio de su proyecto, encontrará los archivos de inclusión y los archivos de la biblioteca. Tenga en cuenta que hay una versión para Visual Studio 110, no 120, pero debido a que libcurl es una biblioteca C, puede usarla con Visual Studio 2013. Asegúrese de que el directorio de inclusión y el directorio lib estén especificados en los directorios de Visual C ++ en las propiedades del proyecto.

Asegúrese de tener los siguientes archivos como entrada adicional para el enlazador libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;

Otra forma de usar curl / libcurl es construir con CMake v2.8.12 + (suponiendo que git ya esté instalado en su computadora)

Abra la ventana de cmd y cambie el directorio a la carpeta apropiada

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

Abra CURL.sln generado en Visual Studio y compilelo.

CMake opciones que uso en el ejemplo

-G selecciona generador de comstackción. En nuestro caso Visual Studio 2013 objective de 64 bits

-DCMAKE_INSTALL_PREFIX: proporciona la carpeta raíz donde deben instalarse los destinos.

-DCURL_STATICLIB = ON – genera comstackción para biblioteca estática

Después de generar el destino de instalación, encontrará las carpetas bin / include / lib en C: \ curl.vc12

Brinde esa ruta a su solución y cree su código con curl lib.

Intenté hacerlo desde cero con VS2012 (no tengo 2013) y funciona perfectamente.

  • Descargué la versión 7.19.3 de http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel-msvc porque es la única versión disponible para VS.
  • Agregué el directorio de inclusión, no el directorio curl, como dice en el tutorial.
  • Recopilé un pequeño proyecto de juguete sin ningún problema.

Por lo tanto, no estoy seguro de cuál es tu problema, pero:

  • Asegúrese de descargar el archivo correcto.
  • Intenta colocar la carpeta cURL en una ruta sin espacio.
  • Si conoce a alguien que usa VS2012 o una versión anterior, pruebe su código con el mismo include y lib y vea si funciona.
  • Pegue un ejemplo de trabajo mínimo de su código para que pueda probarlo.

Esto es un poco tarde, pero para aquellos que todavía tienen problemas, este método funcionó mejor para mí:

  1. Agregar VS al sistema RUTA:
    Por ejemplo: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin .
  2. Descargue el curl-X.zip actual de http://curl.haxx.se/download.html y descomprima.
  3. Abra la línea de comando en curl-X/winbuild .
  4. Llame a vcvars32.bat .
  5. Llamar a nmake /f Makefile.vc mode=static VC=12 .
  6. Goto curl-X/builds/libcurl-XXX .

Allí encontrará los includes y un libcurl_a.lib . Esta lib funciona bien para mí.
Recuerde definir -DCURL_STATICLIB cuando comstack su código con esta lib.

El problema es que los objectives para las herramientas de plataforma VS2013 predeterminadas no están establecidos en los paquetes NuGet . Es por eso que funciona en VS2012 pero no en VS2013. Creé manualmente los archivos de objectives de reemplazo. Instrucciones y descarga:

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

Descargue el código fuente de curl v7.37.0 y use los archivos de proyecto de Visual Studio provistos.

Pasé las últimas semanas puliendo mis propios archivos de proyecto personales, que estaban basados ​​en los archivos VC6 originales, y los agregué al repository.

Los archivos .dsw / .dsp (VC6), .sln / .vcproj (VC7, VC7.1, VC8 y VC9, así como .sln / .vcxproj (VC10, VC11 y VC12) se proporcionan para las comstackciones de DLL y Static Library con soporte para OpenSSL y Windows SSPI / SChannel en configuraciones Win32 y x64.

Encontré una manera fácil de hacer que funcione en VC ++ usando el último paquete. Básicamente, seguí los pasos en Uso de libcurl en Visual Studio. El libcurl y VC ++ son muy antiguos en la instrucción.

Primero descargue el archivo ZIP en la página de descarga https://curl.haxx.se/download.html El paquete ZIP es https://curl.haxx.se/download/curl-7.50.1.zip

Vaya a proyectos-> Windows \ VC10 (o su versión de VC) \ lib \ libcurl.sln, abra el proyecto en VC ++.

Construya el proyecto en la versión DLL. La depuración DLL no funciona en mi VC ++.

Vaya a la versión de comstackción \ Win32 \ VC10 \ DLL, puede encontrar los archivos lib y dll generados en el paso anterior.

Crea una carpeta nueva, con las carpetas include y lib. Copie libcurb.dll y libcurb.lib lo que esté en la carpeta DLL Release a la nueva \ lib. Copie todo en curl-7.50.1 \ include a la nueva carpeta \ include.

Propiedades de C ++ -> Propiedades de configuración -> Directorios de VC ++, agregue new \ include a Include Directories, new \ lib a Library Directories; agregue new \ lib a Linker -> General -> Directorios de biblioteca adicionales, agregue libcurl.lib a Linker -> Input -> Additional Dependencies

Parece que tengo que poner el archivo dll en la misma carpeta con el archivo ejecutable.

Deberia de funcionar.

Para Visual Studio 2017, los pasos en el enlace funcionaron para mí. En caso de que el enlace caduque o específicamente para aquellos que descarguen el archivo zip de libcurl en lugar de clonar desde GitHub, anotaré los pasos aquí.

  1. Establezca variables de entorno con “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat” x64 . Si el comando es exitoso, verá un mensaje que dice Environment initialized for 'x64'

  2. Descargue y extraiga el archivo libcurl comprimido de download libcurl . .zip archivo .zip .

  3. cd en el directorio de winbuild dentro de la carpeta libcurl extraída.
  4. Ejecute nmake /f Makefile.vc mode=dll MACHINE=x64 para comstackr. Para obtener más información sobre las opciones de comstackción, consulte el archivo de texto winbuild en la carpeta de winbuild .
  5. Sube un nivel de directorio y cd en la carpeta de builds para encontrar los archivos comstackdos.

¡Todo lo mejor!