Estoy tratando de entender cómo se utilizan las opciones MT y MD al compilar proyectos C / C ++. Sin embargo, sin poder expandir estas supuestas abreviaturas a frases significativas, olvido cuál es cuál de un párrafo al siguiente. Por extraño que parezca, ninguno de los textos que he leído comienza definiendo la M, la T y la D. ¿Qué significan?

-4
Eneroth3 9 may. 2019 a las 16:55

3 respuestas

La mejor respuesta

D LL y en t ernal pueden usarse como nemotécnicos para distinguir / MD de / MT.

0
Eneroth3 9 may. 2019 a las 15:27

Desde el enlace de opciones del compilador proporcionado por chris arriba:

https://docs.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-alphabetically?view=vs-2019

/MD    Creates a multithreaded DLL using MSVCRT.lib.
/MDd   Creates a debug multithreaded DLL using MSVCRTD.lib.
/MT    Creates a multithreaded executable file using LIBCMT.lib.
/MTd   Creates a debug multithreaded executable file using LIBCMTD.lib.

Por lo tanto, MT significa M ulti t hreaded y MD significa M ultithreaded D LL.

3
Rob K 9 may. 2019 a las 14:08

Estos modificadores para cl.exe especifican con qué biblioteca de tiempo de ejecución C se debe vincular; /MT especifica el enlace con LIBCMT.LIB; /MD especifica que se vincule con MSVCRT.LIB.

Las diferentes bibliotecas CRT se describen con mayor detalle aquí. La principal diferencia entre LIBCMT y MSVCRT es que el primero vincula el CRT estáticamente a su archivo de salida, mientras que MSVCRT se vincula a la DLL de tiempo de ejecución de VC (que, a diferencia de lo que sugiere su nombre, no es MSVCRT.DLL (ver aquí)).

1
Govind Parmar 9 may. 2019 a las 14:01