Waarom SO naar DLL converteren?
Een .so slaat machinecode op in ELF-formaat met Linux-systeemaanroepconventies en glibc-koppeling. Een .dll slaat machinecode op in Windows PE-formaat met Windows API-koppeling. Ze zijn gecompileerd voor totaal verschillende besturingssystemen - het verwisselen van de containerindeling zonder opnieuw te compileren zou een bestand opleveren dat door geen van beide besturingssystemen kan worden geladen, omdat de code binnenin nog steeds het verkeerde systeem aanroept.
Hoe SO naar DLL te converteren
MinGW-w64 OPEN-SOURCE
Cross-compileer de broncode van de bibliotheek voor Windows met x86_64-w64-mingw32-gcc -shared -o lib.dll *.c om een Windows .dll te produceren vanaf een Linux-bouwmachine.
MSVC FREE
Compileer de broncode van de bibliotheek op Windows met Visual Studio of cl.exe met de /DLL linker-vlag om een Windows .dll te produceren.
Over deze formaten
Een .so-bestand is een gedeelde bibliotheek (shared object library) op Linux en Unix - het Linux-equivalent van een Windows .dll. Programma's laden dit automatisch tijdens het uitvoeren; u…
Open .SO details →Een DLL (Dynamic Link Library) is een Windows-bibliotheekbestand met gecompileerde code die programma's laden terwijl ze draaien; het is dus niet iets dat u opent door erop te…
Open .DLL details →Kwaliteit & waar op te letten
- Zowel
.soals.dllbevatten systeemeigen machinecode die specifiek voor hun respectievelijke OS is gecompileerd - de grens ligt op het niveau van het besturingssysteem, niet alleen bij de bestandsextensie. - Als u de broncode niet hebt en de bibliotheek is propriëtair, is er geen legale of praktische route naar een
.dll. - Veel open-source bibliotheken leveren al vooraf gebouwde Windows
.dll-bestanden - controleer de releases-pagina van het project voordat u probeert opnieuw te compileren.
Veelgestelde vragen
Waarom kan een converter de binary niet gewoon herverpakken?
.so roept Linux-kernelinterfaces aan die niet bestaan op Windows - zelfs verpakt in een PE-container kan Windows de code niet uitvoeren.Kan Wine een Linux `.so` uitvoeren op Windows?
.dll-bestanden op Linux draaien - de tegenovergestelde richting. Het helpt niet bij het draaien van Linux ELF shared objects op Windows.