tutorial softpedia para for descargar openssl

para - openssl softpedia



¿Cuál es la diferencia entre enlazar contra libeay32MD.lib y libeay32MT.lib? (3)

Adivinando de los nombres, una biblioteca es para multihilo y la otra para multihilo con símbolos de depuración.

Tengo una aplicación de terceros con la fuente, que actualmente está configurada para compilarse contra libeay32MD.lib. Pero esta es una aplicación, no una biblioteca. ¿No debería construirse contra libeay32MT.lib entonces? ¿Cuál es la diferencia entre dos?

Existen las siguientes variantes de bibliotecas:

  • libeay32MD.lib
  • libeay32MDd.lib
  • libeay32MT.lib
  • libeay32MTd.lib

y "estáticos" con el mismo nombre. ¿Puedes explicar la diferencia entre todos ellos?


Estas variaciones determinan qué biblioteca de C ++ se usa y qué tipo de código se genera, aunque solo ''M'' está disponible, lo que significa que tiene múltiples subprocesos, ya no hay opciones de subproceso único.

  • MTd = código de depuración multihilo y enlace a la biblioteca de depuración estática de C ++
  • MDd = código de depuración multi-hilo y enlace a la biblioteca de depuración dinámica (DLL) de C ++
  • MT = Multi threaded, enlazando a la biblioteca estática de C ++
  • MD = Multi threaded, vinculación a la biblioteca dinámica (DLL) de C ++

Solo editado, lo siento, los códigos estaban en orden incorrecto.

Editar 2: más información ...

Estos indicadores son opciones de C ++ y nada que ver con la necesidad de ssleay32.dll y libeay32.dll. Hay 8 versiones de libeay32 - 4 para una compilación estática (sin dependencia en ssl / libeay32.dll) y 4 para compilación dinámica (requiere ssl / libeay32.dll). Cada uno de los 4 se divide en el tipo de biblioteca C ++ requerida ...

C ++ está disponible para vincular estática o dinámicamente a su aplicación, y para cada uno de estos tipos puede usar bibliotecas de depuración o liberar bibliotecas.

/ MT y / MTd (estático) no requieren el código redistribuible de C ++ porque todas las llamadas C / C ++ están contenidas dentro de su programa compilado. Si todos los módulos (no solo ssleay & co.) Con los que se vincula utilizan estas opciones, su aplicación será completamente independiente en términos de dependencias C ++.

/ MD y / MDd (dinámico) necesitan las DLL redistribuibles de C ++ instaladas en la computadora de destino. Para / MD, las versiones se descargan fácilmente de MSFT, pero también debe tener en cuenta qué versión de Visual C ++ utilizó, por ejemplo, VC ++ 2008, VC ++ 2010, etc., existen muchas versiones de la redistribuible que pueda necesitar. Para / MDd, las bibliotecas estarán en su computadora de desarrollo pero no hay una versión general de MSFT para esto, pero puede construir su propio instalador si es necesario usando Visual Studio; usualmente / MDd solo es usado por el desarrollador para la prueba.

Las versiones de SSLEAY, etc. en la pregunta original no indican qué versión de 2005/2008/2010, etc. de Visual C ++ se utilizó para compilar las versiones de MD, pero una vez compilada, se puede observar desde el destino construido utilizando un visor de dependencia (por ejemplo, depende .exe). Por ejemplo, si su aplicación depende de MSVCR90.DLL, eso significa VC ++ 9 (confusamente, esa es la redistribución de 2008).

Todos los desarrolladores necesitan la opción de elegir enlaces de bibliotecas estáticas o DLL, aquí hay algunas notas sobre cada uno:

Enlace estático:

  • autocontenido, fácil de instalar, huella de código más grande, duplicación de código al construir múltiples dll y exe''s.

Enlace dinámico:

  • huella más pequeña, correcciones de errores de actualizaciones de MSFT, código compartido, un poco más difícil de instalar

Cuando tiene un código en una biblioteca que devuelve un objeto C / C ++ (por ejemplo, memoria asignada, std :: cadena, etc.) es obligatorio vincular su código con los mismos indicadores utilizados para compilar la biblioteca, sin excepciones.


  • MD para lanzamiento dinámico
  • MDd para la depuración dinámica
  • MT para liberación estática
  • MTd para depuración estática

Artículo original a través de archive.org [^ 1].

[^ 1]: Enlace original