Warum SO in DLL konvertieren?
Eine .so speichert Maschinencode im ELF-Format mit Linux-Systemaufrufkonventionen und glibc-Verknüpfung. Eine .dll speichert Maschinencode im Windows PE-Format mit Windows API-Verknüpfung. Sie sind für völlig unterschiedliche Betriebssysteme kompiliert - das Austauschen des Containerformats ohne Neukompilierung würde eine Datei erzeugen, die keines der Betriebssysteme laden könnte, da der darin enthaltene Code immer noch das falsche System aufruft.
Wie man SO in DLL konvertiert
MinGW-w64 OPEN-SOURCE
Cross-kompilieren Sie den Quellcode der Bibliothek für Windows mit x86_64-w64-mingw32-gcc -shared -o lib.dll *.c, um eine Windows-.dll von einem Linux-Build-Rechner aus zu erstellen.
MSVC FREE
Kompilieren Sie den Quellcode der Bibliothek unter Windows mit Visual Studio oder cl.exe mit dem /DLL-Linker-Flag, um eine Windows-.dll zu erstellen.
Über diese Formate
Eine .so-Datei ist eine Shared-Object-Bibliothek unter Linux und Unix - das Linux-Äquivalent einer Windows-.dll-Datei. Programme laden sie automatisch zur Laufzeit; du öffnest sie nie…
.SO-Details öffnen →Eine DLL (Dynamic Link Library) ist eine Windows-Bibliotheksdatei, die kompilierten Code enthält, den Programme während des Betriebs laden; sie ist also nicht etwas, das man per Doppelklick…
.DLL-Details öffnen →Qualität & worauf zu achten ist
- Sowohl
.soals auch.dllenthalten nativen Maschinencode, der speziell für das jeweilige Betriebssystem kompiliert wurde - die Grenze liegt auf der Ebene des Betriebssystems, nicht nur beim Dateiformat. - Wenn Sie nicht über den Quellcode verfügen und die Bibliothek proprietär ist, gibt es keinen legalen oder praktischen Weg zu einer
.dll. - Viele Open-Source-Bibliotheken liefern bereits vorkompilierte Windows-
.dll-Dateien aus - prüfen Sie die Releases-Seite des Projekts, bevor Sie versuchen, sie neu zu kompilieren.
Häufig gestellte Fragen
Warum kann ein Konverter die Binärdatei nicht einfach umverpacken?
.so ruft Linux-Kernelschnittstellen auf, die unter Windows nicht existieren - selbst in einen PE-Container verpackt, kann Windows den Code nicht ausführen.Kann Wine eine Linux-`.so` unter Windows ausführen?
.dll-Dateien unter Linux laufen - also die umgekehrte Richtung. Es hilft nicht dabei, Linux ELF Shared Objects unter Windows auszuführen.