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.

Errores del Enlazador de C++ – error LNK2005: … ya definido

Tengo un proyecto que se construye correctamente en la versión de 64 bits, pero arroja errores que se ven así en la versión de 32 bits:
libeay32-s-MT.lib(err.obj) : error LNK2005: ERRerrorstring ya está definido en libcrypto.lib(libcrypti-11.dll)

Hay una lista de estos errores, pero todos se ven similares. No estoy seguro si esto está relacionado con el hecho de que arroja el error en la versión de 32 bits, o si es algo más en la configuración. ¿Alguien ha tenido algo similar? Estoy usando VS2017 y Windows.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error indica que hay un conflicto con la función _ERR_error_string, la cual ya está definida en la biblioteca libcrypto.lib, mientras se está definiendo nuevamente en la biblioteca libeay32-s-MT.lib durante el proceso de enlace.

    Este error a veces ocurre debido a una incompatibilidad en la arquitectura. Dado que tu proyecto se está compilando correctamente en la arquitectura de 64 bits pero muestra errores en la de 32 bits, es posible que esté relacionado con la arquitectura.

    Una posible solución a este problema es verificar si los archivos de biblioteca libcrypto.lib y libeay32-s-MT.lib son compatibles con la arquitectura de 32 bits. Es posible que alguna de estas bibliotecas esté construida únicamente para una arquitectura de 64 bits y, por lo tanto, esté causando el conflicto en la arquitectura de 32 bits.

    Otra posible solución es asegurarse de que las bibliotecas estén enlazadas en el orden correcto. Por ejemplo, si libcrypto.lib depende de libeay32-s-MT.lib, entonces libcrypto.lib debe ser enlazada antes que libeay32-s-MT.lib.

    También puedes intentar deshabilitar la generación de archivos de manifiesto durante el proceso de compilación. Esto puede hacerse agregando la siguiente línea al archivo del proyecto:

    <generatemanifest>false</generatemanifest>
    

    Si aún tienes problemas, puede ser útil revisar la configuración del enlazador y verificar si hay alguna configuración específica relacionada con la arquitectura de 32 bits.

Comments are closed.