es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo compilar estáticamente y utilizar openssl/md5.h en C++?

Estoy intentando usar la función de hash md5 en la biblioteca openssl en c++.

Descargué la carpeta de openssl y referencié la ubicación de la carpeta en “AdditionalIncludeDirectories” en mi archivo .vcxproj. El compilador reconoce que las funciones existen, sin embargo, no puede enlazar las funciones.

Aquí está mi fragmento de código:

    MD5_CTX md5;

    MD5_Init(&md5);
    MD5_Update(&md5, (const unsigned char *)test, hi.length());
    unsigned char buffer_md5[16];
    MD5_Final(buffer_md5, &md5);
    printf("Input: %s", hi);
    printf("\nMD5: ");
    char buf[32];
    for (i = 0; i < 16; i++) {
        sprintf(buf, "%02x", buffer_md5[i]);
        result.append(buf);
    }
    std::cout << "\nResult:" << result << endl;

Sin embargo, aparece un error de enlaceador. Entiendo que esto se debe a que no he enlazado ninguna biblioteca. Quiero entender cómo crear las bibliotecas o si podemos descargarlas y agregarlas a la ruta para enlazarlas.

Este es el error que estoy viendo:

2>a.obj : error LNK2001: unresolved external symbol MD5_Update
2>a.obj : error LNK2001: unresolved external symbol MD5_Final
2>a.obj : error LNK2001: unresolved external symbol MD5_Init
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resolver los errores del enlazador, necesitas enlazar con la biblioteca OpenSSL. Puedes descargar y construir la biblioteca OpenSSL tú mismo, o puedes descargar un archivo binario precompilado y agregarlo a la configuración del enlazador de tu proyecto.

    Suponiendo que has descargado un archivo binario precompilado, puedes agregar la biblioteca a tu proyecto siguiendo estos pasos:

    1. En Visual Studio, haz clic derecho en tu proyecto y selecciona “Propiedades”.
    2. En el panel izquierdo, navega a “Enlazador” -> “Entrada”.
    3. En el campo “Dependencias Adicionales”, agrega la ruta al archivo de biblioteca OpenSSL (por ejemplo, “C:\ruta\a\libssl.lib”).

    Alternativamente, puedes utilizar la directiva #pragma para agregar la biblioteca:

    #pragma comment(lib, "libssl.lib")
    

    Nota: Es posible que también necesites agregar la ruta a los archivos de encabezado de OpenSSL en la configuración de “Directorios de inclusión adicionales”.

Comments are closed.