Dlaczego konwertować SO na DLL?
Plik .so przechowuje kod maszynowy w formacie ELF z konwencjami wywołań systemowych Linux i powiązaniami glibc. Plik .dll przechowuje kod maszynowy w formacie Windows PE z powiązaniami Windows API. Są one kompilowane dla całkowicie różnych systemów operacyjnych - zamiana formatu kontenera bez ponownej kompilacji stworzyłaby plik, którego żaden system nie mógłby załadować, ponieważ kod wewnątrz nadal odwoływałby się do niewłaściwego systemu.
Jak przekonwertować SO na DLL
MinGW-w64 OPEN-SOURCE
Skompiluj krzyżowo kod źródłowy biblioteki dla systemu Windows, używając polecenia x86_64-w64-mingw32-gcc -shared -o lib.dll *.c, aby wyprodukować plik .dll dla Windows na maszynie z systemem Linux.
MSVC FREE
Skompiluj kod źródłowy biblioteki w systemie Windows, używając Visual Studio lub cl.exe z flagą konsolidatora /DLL, aby wyprodukować plik .dll dla Windows.
O tych formatach
Plik .so to biblioteka współdzielona (shared object) w systemach Linux i Unix - odpowiednik plików .dll w systemie Windows. Programy ładują go automatycznie podczas uruchamiania; nigdy nie…
Otwórz szczegóły .SO →DLL (Dynamic Link Library) to plik biblioteki systemu Windows zawierający skompilowany kod, który programy ładują podczas działania, więc nie jest to coś, co otwiera się dwukrotnym…
Otwórz szczegóły .DLL →Jakość i na co uważać
- Zarówno
.so, jak i.dllzawierają natywny kod maszynowy skompilowany specjalnie dla odpowiedniego systemu operacyjnego - bariera znajduje się na poziomie systemu, a nie tylko formatu pliku. - Jeśli nie posiadasz kodu źródłowego, a biblioteka jest własnościowa, nie istnieje żadna legalna ani praktyczna droga do uzyskania pliku
.dll. - Wiele bibliotek open-source dostarcza już prekompilowane pliki
.dlldla Windows - sprawdź stronę wydań projektu przed próbą ponownej kompilacji.
Najczęściej zadawane pytania
Dlaczego konwerter nie może po prostu przepakować pliku binarnego?
.so wywołuje interfejsy jądra Linux, które nie istnieją w systemie Windows - nawet po opakowaniu w kontener PE, Windows nie może wykonać tego kodu.Czy Wine może uruchomić linuksowy plik `.so` w systemie Windows?
.dll działały w systemie Linux - to kierunek odwrotny. Nie pomaga to w uruchamianiu obiektów współdzielonych Linux ELF w systemie Windows.