Program nie może się uruchomić, ponieważ libgcc s dw2-1.brak dll

Stworzyłem prosty program w C++ z kodem:: Blocks.

Jeśli uruchamiam go z Code:: Blocks, działa poprawnie; ale jeśli uruchamiam go przez dwukrotne zaznaczenie pliku wykonywalnego, wyskakuje okno z następującym komunikatem:

Program nie może się uruchomić, ponieważ libgcc_s_dw2-1.dll brakuje z komputera.
Spróbuj ponownie zainstalować program, aby rozwiązać ten problem.

Więc w czym problem? Co muszę zrobić, żeby to naprawić?

Author: rightfold, 2011-01-15

16 answers

Uważam, że jest to problem kompilatora MinGW / gcc, a nie konfiguracja Microsoft Visual Studio.

libgcc_s_dw2-1.dll powinien znajdować się w katalogu bin kompilatora. Możesz dodać ten katalog do zmiennej środowiskowej PATH w celu linkowania w trybie runtime, lub możesz uniknąć problemu, dodając "- static-libgcc-static-libstdc++ " do flag kompilatora.

Jeśli planujesz dystrybucję pliku wykonywalnego, ten ostatni prawdopodobnie ma największy sens. Jeśli planujesz uruchomić go tylko na własnej maszynie, zmiana zmiennej środowiskowej PATH jest atrakcyjną opcją (zmniejsza rozmiar pliku wykonywalnego).

Aktualizacja:

Na podstawie opinii Grega Treleavena (Zobacz komentarze poniżej), dodaję linki do:

[zrzut ekranu kodu:: bloki "opcje budowania projektu"]

[opcje linku GNU gcc]

Ta ostatnia dyskusja zawiera opcje linkera -static-libgcc i -static-libstdc++.

 199
Author: hardmath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-07 14:38:03

W Eclipse znajdziesz go w properties projektu > C / C++ Build > Settings > MinGW C++ Linker > Misc

Musisz dodać go do" flagi linkera " na górze; nigdzie indziej. Więc po prostu Odbuduj.

Zrzut ekranu właściwości Eclipse

Odkryłem, że łączenie tych statycznie eksploduje rozmiar do 1400 kb nawet przy optymalizacjach. Jest o 277kb większy w porównaniu do kopiowania przez współdzielone biblioteki DLL. To jest 388kb większe, jak również po UPXing wszystko. Bardzo dobrze. Wystarczy dołączyć biblioteki DLL ponieważ użytkownik końcowy może zdecydować się na ich usunięcie lub nie, jeśli mają je zainstalowane gdzie indziej.

 36
Author: TommyTom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-24 10:24:08

Code:: Blocks: add '- static ' in settings - >compiler->linker settings- > Other linker options.

 11
Author: user1826947,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-20 17:10:27

Zobacz także . To rozwiązało mój problem.

Przy okazji, czy to na pewno compiler flaga? Może {[1] } jest tu bardziej odpowiednie określenie?

 7
Author: fat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-22 19:54:18

Znajdź bibliotekę dll na swoim komputerze i skopiuj ją do tego samego katalogu, w którym znajduje się Twój plik wykonywalny.

 6
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-15 23:21:17

Skopiuj " libgcc_s_dw2-1.dll " to were make.exe jest. (Jeśli używasz Msys, skopiuj go do \MSYS \ bin) Upewnij się, że ścieżka do zrobienia.exe jest ustawiony w env. Ścieżka (if make.exe jest w folderze "bin", najprawdopodobniej, i masz msys, to \MSYS \ bin) Kompilacji, rund, debugowania itp. szczęśliwy.

 5
Author: Blizz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-07 23:08:05

Przejdź do MinGW http sourceforge.net drzewo. W sekcji Home / MinGW / Base / gcc / Version4(lub jakiejkolwiek używanej wersji)/gcc-4 (version)/ znajdziesz Plik taki jak gcc-core-4.8.1-4-mingw32-dll.smoła.lzma. Rozpakuj go i przejdź do folderu bin, gdzie znajdziesz swój libgcc_s_dw2-1.dll i innych dll. skopiuj i wklej to, czego potrzebujesz do katalogu bin.

 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-24 22:03:51

Udało mi się to przezwyciężyć używając "gcc" zamiast "g++" dla mojego kompilatora. Wiem, że nie jest to opcja dla większości ludzi, ale pomyślałem, że wspomnę o tym jako opcji obejścia problemu:)

 5
Author: rogerdpack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 15:58:57

Nie możesz umieścić go w system32 lub coś takiego jak robisz z innymi plikami dll, aby każdy program, który próbujesz uruchomić, nie miał tego problemu na twoim komputerze?

Potrzebuję tylko ścieżki, gdzie ją umieścić.

Irytujące jest umieszczanie go w katalogu za każdym razem, gdy uruchamiam program, który właśnie zbudowałem...

Edit: znalazłem rozwiązanie:

Wyodrębnij libgcc_s_dw2-1.dll do lokalizacji na komputerze. My polecam rozpakować go do katalogu programu, który na proszę o libgcc_s_dw2-1.dll.

Jeśli to nie zadziała, będziesz musiał wyodrębnić libgcc_s_dw2-1.dll do Twój katalog systemowy. Domyślnie jest to:

  • C:\Windows\System (Windows 95/98 / Me)
  • C:\WINNT\System32 (Windows NT/2000)
  • C:\Windows\System32 (Windows XP, Vista, 7)

Jeśli używasz 64-bitowej wersji Windows, Powinieneś również umieścić libgcc_s_dw2-1.dll w C:\Windows\SysWOW64\

Upewnij się nadpisać istniejące pliki (ale zrobić kopię zapasową oryginalny plik). Uruchom ponownie komputer.

Jeśli problem nadal występuje, spróbuj wykonać następujące czynności:

  • Otwórz menu Start systemu Windows i wybierz " Uruchom...".
  • wpisz CMD i naciśnij Enter (lub jeśli używasz Windows ME, wpisz polecenie)).
  • wpisz regsvr32 libgcc_s_dw2-1.dll i naciśnij Enter.
 4
Author: yossi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-31 15:43:07

Po prostu przejdź do Ustawienia>>kompilatora i debuggera, a następnie kliknij zakładkę Ustawienia linkera i przejdź do "inne opcje linkera" edytuj sterowanie i wklej: "-static-libgcc-static-libstdc++" do tego, nie ma opcji flagi kompilatora w opcjach flagi kompilatora dla Code::Blocks, więc to jest sposób na rozwiązanie tego problemu, przyszedłem tutaj szukając rozwiązania i jeden facet, który napisał o "-static-libgcc-static-libstdc++" dał właściwy pomysł, i tak jakby nie było opcji flagi kompilatora. resztę wymyśliłem przez przypadek, ale to działa, plik można kliknąć z zewnątrz Code:: Blocks, działa bezpośrednio z pulpitu.

 4
Author: Jack Offington,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-23 14:25:05

Dodaj ścieżkę do tej biblioteki dll do zmiennej środowiskowej PATH.

 3
Author: Bojan Komazec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-15 23:29:28

Włączenie - static-libgcc do linii kompilacji rozwiązuje problem

g++ my.cpp -o my.exe -static-libgcc

Zgodnie z: @ hardmath

Możesz również utworzyć alias na swoim profilu [.profil ] Jeśli jesteś na MSYS2 na przykład

alias g++="g++ -static-libgcc"

Teraz Twoje polecenie GCC też idzie; -)

Pamiętaj, aby ponownie uruchomić Terminal

 2
Author: PYK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-12 17:50:46

Dodanie "- static " do innych opcji linkera rozwiązuje ten problem. Właśnie miałem ten sam problem po przetestowaniu tego na innym systemie, ale nie na własną rękę, więc nawet jeśli nie zauważyłeś tego na swoim systemie programistycznym, powinieneś sprawdzić, czy masz ten zestaw, jeśli statycznie łączysz.

Kolejna uwaga, kopiowanie DLL do tego samego folderu co plik wykonywalny nie jest rozwiązaniem, ponieważ narusza ideę statycznego łączenia.

Inną opcją jest użycie wersji TDM MinGW co rozwiązuje ten problem.

Update edit: to może nie rozwiązać problemu dla wszystkich. Innym powodem, dla którego niedawno odkryłem, jest to, gdy używasz biblioteki skompilowanej przez kogoś innego, w moim przypadku był to SFML, który został niewłaściwie skompilowany i tak wymagał DLL, który nie istniał, ponieważ został skompilowany z inną wersją MinGW niż to, czego używam. Używam krasnoluda build, ten używał innego, więc nie miałem DLL nigdzie i oczywiście, nie chciałem go, ponieważ był to statyczny build. Rozwiązaniem może być znalezienie innej kompilacji biblioteki lub samodzielne jej zbudowanie.

 1
Author: Neil Roy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-18 03:45:03

W CodeBlocks możesz przejść do ustawień...Kompilator... i wybrać albo 1) dwa elementy w niebieskim pudełku lub 2) jeden element w zielonym polu

ustawienia kompilatora codeblocks

 1
Author: raddevus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-08 14:31:18

Jeśli zastanawiasz się, gdzie możesz pobrać bibliotekę współdzieloną (chociaż nie będzie to działać na urządzeniach Twojego klienta, chyba że dołączysz dll), oto link: https://de.osdn.net/projects/mingw/downloads/72215/libgcc-9.2.0-1-mingw32-dll-1.tar.xz/

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-09 17:58:33

Pracując z msys2 otrzymałem ten sam błąd podczas próby uruchomienia wersji release mojego projektu w środowisku debugowania. Rozwiązanie mojego problemu jest oczywiste: użyj programu wykonywalnego z symbolami debugowania.

 0
Author: Rubén Pozo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-28 09:23:33