Hvorfor konvertere SO til DLL?
En .so lagrer maskinkode i ELF-format med Linux-systemkallkonvensjoner og glibc-kobling. En .dll lagrer maskinkode i Windows PE-format med Windows API-kobling. De er kompilert for helt forskjellige operativsystemer - å bytte containerformat uten å kompilere på nytt ville produsert en fil som ingen av operativsystemene kunne laste, fordi koden inni fortsatt kaller feil system.
Hvordan konvertere SO til DLL
MinGW-w64 OPEN-SOURCE
Krysskompiler bibliotekets kildekode for Windows ved å bruke x86_64-w64-mingw32-gcc -shared -o lib.dll *.c for å produsere en Windows .dll fra en Linux-maskin.
MSVC FREE
Kompiler bibliotekets kildekode på Windows ved hjelp av Visual Studio eller cl.exe med /DLL-linkerflagget for å produsere en Windows .dll.
Om disse formatene
En .so-fil er et delt objektbibliotek på Linux og Unix - Linux-ekvivalenten til en Windows .dll. Programmer laster den automatisk ved kjøretid; du åpner den aldri direkte. Hvis en app…
Åpne .SO-detaljer →En DLL (Dynamic Link Library) er en Windows-biblioteksfil som inneholder kompilert kode som programmer laster mens de kjører, så det er ikke noe du åpner ved å dobbeltklikke. Hvis en app…
Åpne .DLL-detaljer →Kvalitet og hva du bør passe på
- Både
.soog.dllinneholder innebygd maskinkode kompilert spesifikt for deres respektive operativsystem - grensen ligger på operativsystemnivå, ikke bare i filformatet. - Hvis du ikke har kildekoden og biblioteket er proprietært, finnes det ingen juridisk eller praktisk vei til en
.dll. - Mange åpen kildekode-biblioteker leveres allerede med ferdigbygde Windows
.dll-filer - sjekk prosjektets utgivelsesside før du prøver å kompilere selv.
Ofte stilte spørsmål
Hvorfor kan ikke en konverter bare pakke om binærfilen?
.so kaller Linux-kjernegrensesnitt som ikke eksisterer på Windows - selv om den pakkes inn i en PE-container, kan ikke Windows kjøre koden.Kan Wine kjøre en Linux `.so` på Windows?
.dll-filer kan kjøre på Linux - altså motsatt vei. Det hjelper ikke med å kjøre Linux ELF-delte objekter på Windows.