Program nie uruchamia się z exe: brak plików libgcc_s_dw2-1.dll, libstdc++-6.dll
Program działa, gdy jest uruchamiany z poziomu środowiska programistycznego (np Code::Blocks), ale przy próbie uruchomienia go z pliku
.exe pojawia się komunikat błędu informujący o braku jednego z plików:
libgcc_s_dw2-1.dll,
libstdc++-6.dll. W praktyce brakuje obu, błąd związany z drugim pojawi się, gdy naprawi się pierwszy błąd. Rozwiązania na to są dwa: dostarczyć wymagane pliki, lub sprawić, by nie były wymagane.
Rozwiązanie A: statyczne linkowanie
Aby te dwie biblioteki zostały dołączone do programu statycznie, wystarczy dodać opcję linkera
-static. W Code::Blocks można to dodać w globalnych ustawieniach kompilatora: Settings/Compiler.. Zakładka Linker settings, Other linker options.
Program nie będzie wymagać tych plików do uruchomienia, ale rozmiar pliku exe będzie większy.
Rozwiązanie B: dostarczenie brakujących plików
Te pliki są na komputerze, tylko system operacyjny mając sam plik
exe, nie wie gdzie ich szukać. Pierwszą sprawdzaną lokalizacją jest katalog, w którym znajduje się ten plik
exe i tutaj te pliki powinny trafić. Te 2 pliki znajdują się w katalogu
bin kompilatora.
Jeśli nie wiesz, gdzie znajduje się twój kompilator, można to odczytać z Code::Blocks. Settings/Compiler.. Zakładka Toolchain executables. Będzie tam podana ścieżka do katalogu, który zawiera katalog bin (Compiler's installation directory) |
Tym sposobem można naprawić dowolny błąd brakującego pliku DLL.
Rozwiązanie C: poprawne zainstalowanie kompilatora
Instalowanie GCC jak należy to sztuka, która chyba wymarła. Gdy kompilator jest 'poprawnie' zainstalowany, nie potrzeba nawet środowiska programistycznego, by z niego skorzystać. Jeśli wszystko działa pod takim Code::Blocks, to brakuje tylko ostatniego kroku - dodania ścieżki do kompilatora do
PATH. Wejdź we właściwości systemu (Win+R,
sysdm.cpl - dało się jakoś do tego dojść przez 'Mój Komputer'..), zakładka Zaawansowane, przycisk Zmienne środowiskowe. Otwiera się okno, które pozwala manipulować zmiennymi środowiskowymi dla aktualnego użytkownika, lub ogólnymi dla systemu. Znajdź tam
PATH (lub
Path - wielkość liter nie ma większego znaczenia w Windowsie), naciśnij Edytuj i dodaj ścieżkę do katalogu
bin kompilatora (jeśli nie wiesz gdzie to jest, patrz: Rozwiązanie B). Jeśli operujesz na starszym Windowsie, to okienko które się otworzy będzie zawierać po prostu jedno pole tekstowe z wartością zmiennej. Dopisz po prostu ścieżkę na koniec, nie zapomnij tylko o średniku oddzielającym wpisy. Na Windows 10 te okienko wygląda zupełnie inaczej, ale
raczej nie wymaga żadnych wyjaśnień. Zatwierdź wszystkie zmiany i jeśli wszystkie kroki zostały wykonane poprawnie, to kompilatora można użyć z poziomu cmd:
C:\Users\admin>g++
g++: fatal error: no input files
compilation terminated.
Teraz system wie, gdzie znaleźć kompilator i będzie też wiedzieć, gdzie znaleźć te pliki DLL, gdyż ścieżki z
PATH również są przeszukiwane pod tym kątem.
Te pliki DLL wciąż są wymagane, tylko system wie gdzie je znaleźć. Pliki exe będą mniejsze, ale nie zapomnij dołączyć tych plików, gdy przeniesiesz program na inny komputer.