Konwertuj DLL na EXE
Zbuduj hosta EXE dla biblioteki DLL, gdy launcher lub urządzenie nie może bezpośrednio ładować bibliotek.
Jak konwertować dll do exe
- Inne formaty
- Ocena: 3.5/5
Program uruchamiający, system wdrażania lub urządzenie może akceptować wyłącznie program Windows, nawet gdy dostępny komponent jest plikiem DLL. Praktycznym rozwiązaniem jest zazwyczaj utworzenie hosta EXE wywołującego bibliotekę DLL, a nie zmiana nazwy pliku lub jego mechaniczna konwersja.
Czym jest format DLL
DLL (Dynamic Link Library) to plik Windows Portable Executable (PE) zawierający skompilowany kod, dane lub zasoby ładowane przez inny proces. Aplikacje używają plików DLL do współdzielonych funkcji, plug-inów, kodeków, dostawców baz danych, sterowników, komponentów COM oraz zestawów .NET.
Visual Studio, .NET SDK, MinGW, Delphi i inne toolchainy tworzą pliki DLL. Zwykły plik DLL jest przeznaczony do załadowania przez inny program i udostępnia funkcje lub klasy zarządzane; zazwyczaj nie zapewnia punktu wejścia procesu, interfejsu użytkownika ani zachowania startowego oczekiwanego od pliku EXE.
Czym jest format EXE
EXE to plik PE przeznaczony do uruchamiania jako proces Windows. Jego nagłówek identyfikuje podsystem wykonywalny i punkt wejścia, a plik może zawierać program konsolowy, aplikację graficzną, instalator lub usługę. Plik EXE nadal może zależeć od oryginalnego pliku DLL i innych plików runtime, więc nie jest automatycznie samodzielny.
Jak utworzyć hosta wykonywalnego
Gdy dostępny jest kod źródłowy
- Ustal, czy biblioteka jest natywnym C++, zarządzanym .NET czy innym outputem kompilatora; host musi używać zgodnego interfejsu i architektury.
- W Visual Studio utwórz Console App lub Windows App za pomocą File → New → Project.
- Dodaj projekt biblioteki za pomocą Project → Add Project Reference. W przypadku zarządzanego pliku binarnego bez jego projektu dodaj assembly jako referencję i skonfiguruj jego ścieżkę w projekcie.
- Zaimplementuj punkt wejścia hosta:
mainlubWinMaindla natywnego C++, alboProgram.csiMaindla aplikacji .NET. Przeanalizuj argumenty, zainicjalizuj wymagane ustawienia, wywołaj publiczne API biblioteki i zwróć odpowiedni kod wyjścia. - Zbuduj projekt za pomocą Build → Build Solution. Visual Studio zwykle zapisuje plik EXE w katalogu konfiguracji, takim jak
bin\Release.
W przypadku zarządzanej biblioteki .NET CLI może utworzyć i opublikować hosta:
dotnet new console -n DllHost
dotnet add DllHost reference ..\Library\Library.csproj
dotnet publish DllHost -c Release -r win-x64 --self-contained true
Opublikowane pliki pojawią się w katalogu DllHost\bin\Release\<target-framework>\win-x64\publish. W razie potrzeby zastąp target framework i runtime identifier. --self-contained true dołącza runtime .NET, ale nie gwarantuje utworzenia jednego fizycznego pliku ani usunięcia zależności natywnych.
Gdy dostępny jest wyłącznie zarządzany plik DLL .NET
Użyj ILSpy, aby sprawdzić assembly, jego typy publiczne, referencjonowane assembly, target framework oraz wywoływalne metody. Utwórz hosta C#, który będzie odwoływał się do pliku DLL i wywoływał udokumentowaną metodę publiczną. ILSpy może dekompilować kod na potrzeby analizy, ale zaciemnianie kodu, brakujące zależności, kod niebezpieczny i ograniczenia licencyjne mogą uniemożliwić działającą rekonstrukcję; używaj kodu tylko wtedy, gdy masz na to zgodę.
Aby utworzyć wdrożenie .NET w postaci pojedynczego pliku, ustaw PublishSingleFile na true i opublikuj aplikację dla konkretnego runtime, takiego jak win-x64. Zależności natywne nadal mogą być wypakowywane w runtime, a ten proces nie konwertuje natywnego pliku DLL na kod zarządzany.
Gdy dostępny jest wyłącznie natywny plik DLL
Utwórz hosta C++ w Visual Studio lub innym zgodnym toolchainie. Połącz go z import library pliku DLL albo załaduj ją w runtime za pomocą LoadLibrary i pobierz funkcje przy użyciu GetProcAddress. Musisz znać nazwę każdej eksportowanej funkcji, typy parametrów, układ struktur, calling convention, zasady własności oraz wymaganą sekwencję inicjalizacji. Metody klas C++ zasadniczo nie są stabilnym interfejsem DLL, chyba że biblioteka dokumentuje zgodne ABI; łatwiejsze do wywołania jest API eksportowane w stylu C.
rundll32.exe example.dll,ExportedFunction nie jest konwerterem. Działa wyłącznie z eksportami zgodnymi z ograniczoną sygnaturą callback oczekiwaną przez rundll32 i nie nadaje się do dowolnych funkcji, metod C++ ani bibliotek wymagających niestandardowych argumentów lub inicjalizacji.
Ograniczenia zgodności i konwersji
- Zmiana nazwy
library.dllnaprogram.exezmienia wyłącznie rozszerzenie nazwy pliku. Nie dodaje punktu wejścia wykonywalnego ani nie zmienia metadanych PE. - Plik DLL może być plug-inem przeznaczonym dla jednego konkretnego hosta, nie udostępniać użytecznego publicznego API, wymagać konfiguracji lub stanu rejestru albo zależeć od dodatkowych plików DLL, sterowników, rejestracji COM lub runtime Visual C++/.NET. Wrapper nie może zastąpić tych wymagań.
- Dopasuj architekturę procesu i biblioteki: host
x86wymaga pliku DLL x86, natomiast hostx64wymaga pliku DLL x64. Proces 32-bitowy nie może załadować pliku DLL 64-bitowego. - Zarządzane assembly .NET i natywne pliki DLL wymagają różnych narzędzi. ILSpy służy do zarządzanych assembly; pliki binarne natywne zwykle wymagają kodu źródłowego, SDK, dokumentacji eksportów, zgodnych nagłówków i zgodnego kompilatora. Narzędzia takie jak
dumpbin /exportsz Visual Studio mogą sprawdzać natywne eksporty, ale nie potrafią ustalić typów ich parametrów. - Nie istnieje renomowany konwerter online ogólnego przeznaczenia, który zamienia dowolny plik DLL w funkcjonalny plik EXE. Usługi konwersji plików online nie mogą utworzyć punktu wejścia ani wrappera, a także mogą ujawnić zastrzeżone lub niebezpieczne pliki binarne; wykonuj tę pracę lokalnie za pomocą Visual Studio, .NET SDK lub ILSpy.
Krótko mówiąc, nie da się bezpośrednio przekonwertować DLL na EXE.
Dlatego nie istnieje tak zwany konwerter dll na exe ani darmowe narzędzie online do konwersji .dll na .exe.
Porównanie formatu DLL z EXE
Jak formaty DLL i EXE wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.
| Cecha | .DLL Dynamic-Link Library | .EXE Portable Executable |
|---|---|---|
| Otwarty standard | Nie | Nie |
| Kompresja | Bez kompresji | Bez kompresji |
| Typowy rozmiar pliku | Średni | Duży |
| Otwiera się w przeglądarce internetowej | Nie | Nie |
| Dalsza edycja | Nie do bezpośredniej edycji | Nie do bezpośredniej edycji |
| Obsługa metadanych | Podstawowy | Rozbudowany |
| Czytelny tekstowo | Nie | Nie |
| Najlepszy do | Osadzanie w aplikacjach | Osadzanie w aplikacjach |
| Wprowadzono | 1993 | 1993 |
| Twórca | Microsoft | Microsoft |
Dodatkowe formaty dla konwersji pliku
dll
Konwersja odwrotna
Konwersja do .exe
z innych formatów
- msi do exe
- bin do exe
- 7zip do exe
- text do exe
- lnk do exe
- txt do exe
- deb do exe
- jpeg do exe
- ink do exe
- scratch do exe
- 7-zip do exe
- air do exe
- akp do exe
- apl do exe
- asc do exe
- bmp do exe
- cpl do exe
- fbr do exe
- fla do exe
- flv do exe
- ios do exe
- mve do exe
- part1.exe do exe
- part3.rar do exe
- part5.rar do exe
- part7.rar do exe
- pgal do exe
- r65 do exe
- rev do exe
- s2e do exe
- sb do exe
- sb2 do exe
- swc do exe
- swt do exe
- wav do exe
- wjf do exe
- zi do exe
- zipx do exe