No estoy seguro de por qué todos aconsejan no utilizar la biblioteca estándar
. Este método supone que desea que su código se ejecute en Windows 2000 o posterior y no le importa perder soporte para Win 9x. Aún puede usar la biblioteca estándar C/C++. Puede usar la opción /MT
en las páginas de generación de código C/C++ de su proyecto, que se vincularán estáticamente en la biblioteca estándar.
Sin embargo, dos notas, la primera de mí: la idea de tener una biblioteca estándar enlazada dinámicamente es que cualquier error en él será reparado por Windows Update (en teoría). Si vincula la biblioteca de forma estática, debe redistribuir su aplicación para corregir errores estándar de la biblioteca. Por lo tanto, no se recomienda.
En segundo lugar, del artículo de MSDN en compiler options:
Precaución No mezcle estáticos y dinámicos versiones de los bibliotecas en tiempo de ejecución. Tener más de una copia de las bibliotecas de tiempo de ejecución en un proceso puede causar problemas, porque los datos estáticos en una copia no se comparten con la otra copia. El vinculador impide enlazar con versiones dinámicas estáticas y dentro de un archivo .exe, pero aún puede terminar con dos (o más) copias de las bibliotecas en tiempo de ejecución. Por ejemplo, una biblioteca de enlace dinámico vinculada con las versiones estáticas (no-DLL) de las bibliotecas en tiempo de ejecución pueden causar problemas cuando se usa con un archivo .exe que se vinculó con la versión dinámica (DLL) de las bibliotecas de tiempo de ejecución . (También debe evitar la mezcla de los depurar y no depuración versiones de las bibliotecas en una proceso.)
En resumen, hacer esto puede causar confusión si se intenta construir en otros componentes vinculados contra un dinámicamente biblioteca estándar enlazada.
Por supuesto, el otro inconveniente es que esto hará que su ejecutable sea más grande también.
Editar: el resultado, en depends.exe, se ve así: (por supuesto, estoy usando Windows de 64 bits, que solo está disponible para XP y posterior ... si quieres saber cómo se ve esto como en las ventanas de 32 bits, imagina si el 64
s no estuviera allí!).
+1 Este es el epítome de una buena pregunta SO. –
¿Cuál es el propósito de este programa, si puedo preguntar? –
Estoy implementando la inyección de código de un proceso de 64 bits a un proceso de 32 bits, y necesito un programa de 32 bits para encontrar la dirección de algunas funciones. – DxCK