Perché convertire SO in DLL?
Un file .so memorizza codice macchina in formato ELF con convenzioni di chiamata di sistema Linux e collegamento glibc. Un file .dll memorizza codice macchina in formato Windows PE con collegamento alle API di Windows. Sono compilati per sistemi operativi completamente diversi - scambiare il formato del contenitore senza ricompilare produrrebbe un file che nessuno dei due OS potrebbe caricare perché il codice all'interno chiamerebbe comunque il sistema sbagliato.
Come convertire SO in DLL
MinGW-w64 OPEN-SOURCE
Effettua la compilazione incrociata (cross-compile) del codice sorgente della libreria per Windows usando x86_64-w64-mingw32-gcc -shared -o lib.dll *.c per produrre una .dll di Windows da una macchina di build Linux.
MSVC FREE
Compila il codice sorgente della libreria su Windows usando Visual Studio o cl.exe con il flag del linker /DLL per produrre una .dll di Windows.
Informazioni su questi formati
Un file .so è una libreria di oggetti condivisi su Linux e Unix - l'equivalente Linux di un .dll di Windows. I programmi lo caricano automaticamente all'avvio; non si apre mai direttamente.…
Apri dettagli .SO →Una DLL (Dynamic Link Library) è un file di libreria di Windows che contiene codice compilato caricato dai programmi durante l'esecuzione, quindi non è un file da aprire con un doppio clic.…
Apri dettagli .DLL →Qualità e a cosa prestare attenzione
- Sia i file
.soche i file.dllcontengono codice macchina nativo compilato specificamente per il rispettivo OS - il confine è a livello di sistema operativo, non solo di formato file. - Se non si dispone del codice sorgente e la libreria è proprietaria, non esiste una via legale o pratica per ottenere una
.dll. - Molte librerie open-source forniscono già file
.dllprecompilati per Windows - controlla la pagina dei rilasci del progetto prima di tentare la ricompilazione.
Domande frequenti
Perché un convertitore non può semplicemente riconfezionare il binario?
.so chiama interfacce del kernel Linux che non esistono su Windows - anche se racchiuso in un contenitore PE, Windows non può eseguire il codice.Wine può eseguire un file `.so` di Linux su Windows?
.dll possano essere eseguiti su Linux - la direzione opposta. Non aiuta a eseguire oggetti condivisi ELF di Linux su Windows.