¿Qué es el formato de archivo DEF?
Los archivos .def están asociados con entornos de desarrollo de Windows y OS/2, utilizados junto con C, C++ y otros lenguajes compilados.
Los archivos con la extensión .def almacenan datos en formato de texto plano. Los archivos .def a veces se denominan archivos de definición de módulo y se utilizan para generar bibliotecas DLL. Un archivo .def almacena un conjunto especial de directivas del enlazador -sentencias como LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE y STACKSIZE- utilizadas para definir aspectos clave de una biblioteca DLL, incluyendo qué funciones y símbolos de datos se exponen a los llamadores y qué números ordinales llevan.
El archivo se pasa al enlazador en el momento de la compilación utilizando el modificador /DEF:nombre.def (MSVC) o indicadores equivalentes en MinGW/GCC y LLVM lld-link. Es una entrada de compilación, no un artefacto compilado; el binario resultante es un .dll o .exe.
Una DLL es un archivo de biblioteca que almacena código ejecutable y otros datos relacionados. Los archivos DLL son reutilizables -pueden ser accedidos por múltiples aplicaciones simultáneamente- y se cargan dinámicamente cuando es necesario. Los archivos DLL también son un medio para ahorrar espacio en disco y memoria operativa debido a su naturaleza dinámica. La actualización del software también es más fácil debido al hecho de que los archivos DLL se comparten entre múltiples aplicaciones.
Los compiladores modernos de C/C++ permiten a los desarrolladores marcar los símbolos exportados directamente en el código fuente utilizando __declspec(dllexport), lo que reduce en gran medida la necesidad de un archivo .def separado. Sin embargo, los archivos .def siguen siendo compatibles con el enlazador MSVC actual (link.exe) y LLVM lld-link, y se siguen prefiriendo cuando se requiere una tabla de exportación estable y explícitamente ordenada.
Seguridad y protección
RIESGO: LOWUn archivo .def de definición de módulo es un pequeño archivo de compilación en texto plano y es seguro de abrir y leer - no puede ejecutarse. El único riesgo práctico es editarlo en un proyecto real: cambiar o eliminar una entrada de EXPORTS altera la interfaz pública de la DLL y puede romper los llamadores o cambiar los ordinales de exportación, así que comprenda el impacto en la ABI antes de editar. Como con cualquier archivo fuente, solo confíe en archivos .def de fuentes de proyectos que usted controle.
Detalles del formato
en pocas palabras- Archivo de mapa de Tibia / OTClient (.def) - Algunas herramientas de juegos y el editor de mapas de Tibia usaban .def para definiciones de mapas/apariciones - no relacionado con enlazadores.
- Definición de datos ESRI ArcView / SmartWare - Herramientas antiguas de bases de datos y GIS (SmartWare, ArcView, DataFlex) escribían sus propios archivos de esquema/definición .def.
- Definición de animación AniSprite / Módulo DEFINITION de Oberon-2 y Modula-2 - AniSprite almacenaba definiciones de animación de sprites en .def; Modula-2/Oberon usan .def para la interfaz pública de un módulo.
Programas que abren archivos DEF
Detalles técnicos
especificación profunda| Tipo de formato | Archivo de directivas del enlazador en texto plano |
| Tipo MIME | text/plain |
| Codificación de caracteres | ASCII / ANSI; UTF-8 sin BOM es lo habitual |
| Firma de archivo (bytes mágicos) | Ninguna - identificado por palabras clave como LIBRARY, EXPORTS o NAME al inicio de las líneas |
| Tamaño de archivo típico | Menos de 1 KB a unos pocos KB (un símbolo exportado por línea) |
| Sentencia principal: LIBRARY / NAME | Declara el nombre del módulo incrustado en la cabecera interna de la DLL |
| Sentencia principal: EXPORTS | Enumera cada símbolo a exponer, con indicadores opcionales de ordinal (@N), NONAME y DATA |
| Sentencias adicionales | IMPORTS, SECTIONS (establece atributos de sección), HEAPSIZE, STACKSIZE |
| Modificador del enlazador (MSVC) | /DEF:nombre_archivo.def pasado a link.exe en el momento de la compilación |
| Cadenas de herramientas compatibles | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, enlazador Watcom, enlazador Digital Mars |
| Artefactos de salida | Controla la tabla de exportación de un .dll y la biblioteca de importación (.lib) generada junto a él |
| Sistemas operativos asociados | Windows (principal); OS/2 (heredado); DOS de 16 bits (heredado) |
| Alternativa moderna | __declspec(dllexport) en el código fuente; .def sigue siendo preferido para ordinales de exportación estables y portabilidad entre herramientas |
| Palabras clave heredadas de 16 bits | Sentencias de atributos de segmento CODE y DATA presentes en archivos DEF de Windows/OS/2 de 16 bits; obsoletas en Win32 |
| Compresión y cifrado | Ninguno - siempre se almacena como texto plano sin comprimir ni cifrar |
| Lanzado | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Última versión | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Especificación | learn.microsoft.com |
Conversiones de DEF
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos DEF.