cURL en Visual Studio

Paso 1: Instalacion de Windows SDK

En este post voy a explicar como configurar cURL en Visual Studio, lo primero que debememos hacer es instalar el SDK de Windows desde el siguiente enlace e instalarlo (Windows SDK).

Paso 2: Descarga de la libreria cURL

Despues es necesario descaragar el codigo fuente de la libreria cURL desde el repositorio oficial de github para compilarlo. Descargalo de aqui (github). O tambien puedes ejecutar el comando git clone como se muestra a continuacion:


cd %USERPROFILE%\Downloads
    git clone https://github.com/curl/curl.git

Paso 3: Compilar el codigo

Una vez que ya tienes instalado el Windows SDK presiona la tecla de windows para que se abra el menu de busqueda y escribe "Developer Command Prompt for VS", esto te debe mostrar una opcion para abrir un cmd pero con las herramientas de desarrollador.

Lo que sigue es ejecutar los siguientes comando para compilar el codigo fuente:


    cd %USERPROFILE%\Downloads\curl
    buildconf.bat
    cd winbuild
    nmake /f Makefile.vc mode=static

Paso 4: Copiar la libreria en nuestro proyecto

Ahora dentro de la carpeta Downloads > curl > builds se encuentra el codigo compilado listo para importarlo a nuestro proyecto, en mi caso cuando lo compile me genero tres carpetas, sin embargo solo necesito una, la manera mas simplede saber cual es la carpeta correcta es que NO TIENE la palabra obj, y empieza con libcurl-vc-x86-release-static-ipv6-sspi, ademas dentro de la carpeta NO DEBE haber archivos con extension obj, si no que al contrario, dentro de la carpeta debe haber una llamda include en donde estaran los archivos headers, es decir, los archivos con extension .h, tambien debe haber otra carpeta llamada lib en donde debemos de encontrar un archivo llamado libcurl_a.lib. Bien una vez identifica la carpeta correcta la vamos a compiar dentro de nuestro proyecto ya que esos archivos son necesarios para la compilacion y seria muy tedioso tener que hacer el proceso de compilacion nuevamente.

Paso 5: Creacion del proyecto en Visual Studio

Vamos a proceder a crear un proyecto de Consola en C++, el tipico programa hola mundo.

Paso 6: Modificar la configuracion del proyecto

Este es el paso mas complicado e importante, si no lo haces bien tendras errores al compilar el programa pero en realizad es muy sencillo. Primero vamos a indicar en las propiedades del proyecto que nuestro programa es a 32 bits.

Lo primero que vamos a hacer es ubicar el panel de "solution explores" o "explorador de soluciones" en la parte derecha, (es donde se lista los archivos del proyecto), ahi vamos a seleccionar donde dice el nombre de nuestro proyecto (OJO no en la solucion es en el proyecto), hacemos click izquierdo (opciones) y seleccionamos la ultima que dice propiedades "properties".

Despues en la Opcion VC++ DirectoriesSeleccionamos include directories y agregamos la ruta al directorio que se llama include.

Seleccionamos library directories y agregamos la ruta al directorio que se llama library.

Despues en la Opcion Linker > Input
Seleccionamos Aditional Dependencies y agregamos las siguientes librerias (Una por cada renglon)
  1. libcurl_a.lib
  2. Ws2_32.lib
  3. Crypt32.lib
  4. Wldap32.lib
  5. Normaliz.lib
Ya para finalizar vamos a compilar y copiamos este fragmento de codigo el cual realiza un peticion HTTP a la url www.google.com e imprime en pantalla el resultado de la respuesta del servidor (El HTML).


    #define CURL_STATICLIB
    #include <iostream>
    #include "curl/curl.h"
    using namespace std;
    int main(int argc, char* argv[])
    {
        CURL* req = curl_easy_init();
        CURLcode res;
        if (req)
        {
            curl_easy_setopt(req, CURLOPT_URL, "www.google.com");
            curl_easy_setopt(req, CURLOPT_FOLLOWLOCATION, 1L);
            res = curl_easy_perform(req);
            if (res != CURLE_OK)
            {
                fprintf(stderr, "curl_easy_operation() failed : %s\n", curl_easy_strerror(res));
            }
        }
        curl_easy_cleanup(req);
        return 0;
    }


Referencias Bibliograficas:

Ayon, M. F. H. (s. f.). How To Set-Up libcurl on Visual Studio 2019 - Md. Farhabi Helal Ayon. Medium. https://medium.com/@farhabihelal/how-to-set-up-libcurl-on-visual-studio-2019-a9fdacce6945

Windows SDK - Windows app development. (s. f.). Microsoft. Recuperado 30 de abril de 2022, de https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/

C. (s. f.). Running NMAKE. Microsoft Docs. Recuperado 30 de abril de 2022, de https://docs.microsoft.com/en-us/cpp/build/reference/running-nmake?view=msvc-170

C. (s. f.). GitHub - curl/curl: A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP. libcurl offers a myriad of powerful features. GitHub. Recuperado 30 de abril de 2022, de https://github.com/curl/curl

How do you properly install libcurl for use in visual studio 2017? (2018, 20 diciembre). Stack Overflow. https://stackoverflow.com/questions/53861300/how-do-you-properly-install-libcurl-for-use-in-visual-studio-2017

Comentarios