¿Por qué convertir SO a DLL?
Un .so almacena código máquina en formato ELF con convenciones de llamadas al sistema de Linux y vinculación glibc. Un .dll almacena código máquina en formato Windows PE con vinculación a la API de Windows. Están compilados para sistemas operativos totalmente diferentes - cambiar el formato del contenedor sin recompilar produciría un archivo que ningún SO podría cargar porque el código interno seguiría llamando al sistema incorrecto.
Cómo convertir SO a DLL
MinGW-w64 OPEN-SOURCE
Realice una compilación cruzada del código fuente de la biblioteca para Windows usando x86_64-w64-mingw32-gcc -shared -o lib.dll *.c para producir un .dll de Windows desde una máquina de compilación Linux.
MSVC FREE
Compile el código fuente de la biblioteca en Windows usando Visual Studio o cl.exe con el modificador de enlace /DLL para producir un .dll de Windows.
Acerca de estos formatos
Un archivo .so es una biblioteca de objetos compartidos en Linux y Unix, el equivalente en Linux a un .dll de Windows. Los programas lo cargan automáticamente en tiempo de ejecución; nunca…
Abrir detalles de .SO →Un DLL (Dynamic Link Library) es un archivo de biblioteca de Windows que contiene código compilado que los programas cargan mientras se ejecutan, por lo que no es algo que se abra haciendo…
Abrir detalles de .DLL →Calidad y qué observar
- Tanto
.socomo.dllcontienen código máquina nativo compilado específicamente para su respectivo SO - el límite está en el nivel del sistema operativo, no solo en el formato de archivo. - Si no tiene el código fuente y la biblioteca es propietaria, no existe una ruta legal ni práctica hacia un
.dll. - Muchas bibliotecas de código abierto ya incluyen archivos
.dllde Windows precompilados - verifique la página de lanzamientos del proyecto antes de intentar recompilar.
Preguntas frecuentes
¿Por qué un conversor no puede simplemente empaquetar el binario?
.so llama a interfaces del kernel de Linux que no existen en Windows - incluso envuelto en un contenedor PE, Windows no puede ejecutar el código.¿Puede Wine ejecutar un `.so` de Linux en Windows?
.dll se ejecuten en Linux - la dirección opuesta. No ayuda a ejecutar objetos compartidos ELF de Linux en Windows.