O programa não pode começar porque libgcc s dw2-1.falta o dll

criei um programa simples em C++ Com Código::Blocos.

Se eu o executar a partir do Código:: Blocos, ele funciona correctamente; mas se o executar duplicando o ficheiro executável, aparece uma janela com esta mensagem:

o programa não pode iniciar porque a libgcc_ s_dw2-1.o dll desapareceu do seu computador.
Tente reinstalar o programa para corrigir este problema.

Então, qual é o problema? O que tenho de fazer para o arranjar?

Author: rightfold, 2011-01-15

16 answers

Acredito que esta é uma questão de compilador MinGW/gcc, em vez de uma configuração Visual Studio da Microsoft.

O libgcc_s_dw2-1.dll deve estar na pasta do compilador. Pode adicionar esta pasta à sua variável de ambiente PATH para a ligação em tempo de execução, ou pode evitar o problema adicionando "-static-libgcc-static-libstdc++" às suas opções de compilador.

Se planeias distribuir o executável, este provavelmente faz mais sentido. Se você só planeja executá-lo em sua própria máquina, o mudar a variável de ambiente PATH é uma opção atraente (mantém baixo o tamanho do executável).

Actualizado:

Com base no feedback do Greg Treleaven( ver comentários abaixo), estou a adicionar ligações a:

[imagem do Código:: Blocos "opções de compilação do projecto"]

[opções de ligação do GCC GNU]

A última discussão inclui -static-libgcc e -static-libstdc++ opções do linker.

 199
Author: hardmath, 2011-02-07 14:38:03

No Eclipse, irá encontrá-lo nas propriedades do projecto > C/C++ Build > Settings > MinGW C++ Linker > Misc

Você deve adicioná-lo às "Bandeiras de linker" no topo; em nenhum outro lugar. Então reconstrua.

Eclipse properties screenshot

Descobri que ligar esses estaticamente explode o tamanho até 1.400 kb, mesmo com otimizações. É 277kb maior comparado com apenas copiar sobre os DLLs compartilhados. É 388kb maior também depois de colocar tudo. Muito perdido / perdido aqui. Apenas inclua o DLLs como o usuário final pode decidir excluí-los ou não se eles os têm instalados em outro lugar.
 36
Author: TommyTom, 2014-07-24 10:24:08

Código:: Blocos: adicionar '-estático' na configuração->compilador->configuração do Linker->outras opções do linker.

 11
Author: user1826947, 2013-01-20 17:10:27

Ver também . Resolveu o meu problema.

A propósito, é mesmo bandeira? Talvez linker seja o termo mais adequado aqui?
 7
Author: fat, 2017-07-22 19:54:18

Encontre esse dll no seu PC, e copie-o para a mesma pasta em que o seu executável está.

 6
Author: Dave, 2011-01-15 23:21:17

Copy " libgcc_s_dw2-1.vamos fazer.a exe é. (Se estiver a usar o Msys, Copie-o para \msys\bin) Certifica-te de que é esse o caminho a seguir.exe é definido na env. CAMINHO (if make.exe está em uma pasta "bin", provavelmente, e você tem msys, é \msys\bin) Compile, rund, debug, etc. feliz.

 5
Author: Blizz, 2011-10-07 23:08:05

Vá para o http MinGW sourceforge.net árvore. Em Home / MinGW / Base/gcc / Version4 (ou seja qual for a versão que está a usar) / gcc-4 (Versão)/ irá encontrar um ficheiro como o GCC-core-4.8.1-4-mingw32-dll.alcatrao.lzma. Extrai-o e vai para a pasta do bin onde irá encontrar a sua libgcc_ s_dw2-1.dll e outros dll's. copie e cole o que precisa no seu directório do bin.

 5
Author: , 2015-02-24 22:03:51

Consegui ultrapassar isto usando " gcc "em vez de" g++ " para o meu compilador. Eu sei que esta não é uma opção para a maioria das pessoas, mas pensei em mencioná-la como uma opção de solução :)

 5
Author: rogerdpack, 2018-05-29 15:58:57
Não pode colocá-lo no system32 ou algo do género que faz com outros ficheiros dll, para que todos os programas que tenta executar não tenham esse problema na sua máquina? Só preciso do caminho onde o pôr. É um bocado irritante colocá-lo no directório sempre que dirijo um programa que acabei de construir...

Editar: encontrei a solução:

Extrair a libgcc_s_dw2-1.dê uma localização no seu computador. O recomenda-lhe que o abra para o directório do programa isto é ... a solicitar a libgcc_ S_ DW2-1.dll.

Se isso não funcionar, terá de extrair a libgcc_s_dw2-1.dll to a sua pasta do sistema. Por omissão, isto é:

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

Se usar uma versão de 64 bits do Windows, também deverá colocar libgcc_s_dw2-1.dll in C:\Windows\SysWOW64\

Certifica-te sobrepor todos os ficheiros existentes (mas fazer uma cópia de segurança do ficheiro original). Reinicie o seu computador.

Se o problema ainda ocorrer, tente o seguinte:

  • abra o menu Iniciar do Windows e seleccione " Executar...".
  • escreva CMD e carregue em Enter (ou se usar o Windows ME, escreva comando).
  • Type regsvr32 libgcc_s_dw2-1.dll e pressione Enter.
 4
Author: yossi, 2012-01-31 15:43:07

Basta ir a Definições>>Compilador e Depurador e, em seguida, clique em Configurações do Vinculador guia e ir para o "Outro linker options" (opções de controle de editar e colar: "-estática-libgcc -estática-libstdc++" para ele, não há nenhum compilador opção de sinalizador do Compilador Bandeiras opções para o Code::Blocks, de modo que a maneira de resolver esse problema, Eu vim aqui à procura de uma solução, também, e o cara que postou sobre "estático-libgcc -estática-libstdc++" deu a idéia certa, e eu meio que percebi o resto de fora por acidente mas funcionou, o arquivo é clicável agora a partir do Código Externo:: blocos, funciona a partir do desktop.

 4
Author: Jack Offington, 2013-06-23 14:25:05

Adicionar um caminho a esse dll na variável de ambiente PATH.

 3
Author: Bojan Komazec, 2011-01-15 23:29:28

Incluindo - static-libgcc na linha de compilação, resolve a questão

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

De acordo com: @hardmath

Também pode criar um nome falso no seu perfil [ .profile] se estiver a tomar MSYS2 por exemplo

alias g++="g++ -static-libgcc"
Agora o seu comando do GCC vai através Também; -)

Lembre-se de reiniciar o seu Terminal

 2
Author: PYK, 2019-10-12 17:50:46

Adicionar "- static " a outras opções de linker resolve este problema. Eu estava tendo o mesmo problema depois que eu testei isso em outro sistema, mas não por conta própria, então mesmo que você não tenha notado isso em seu sistema de desenvolvimento, você deve verificar que você tem este conjunto se você está estaticamente ligando.

Outra nota, copiar o DLL para a mesma pasta que o executável não é uma solução, pois derrota a ideia de ligação estática.

Outra opção é usar a versão TDM de MinGW que resolve este problema.

Actualizar editar: isto pode não resolver o problema para todos. Outra razão que eu descobri recentemente para isso é quando você usa uma biblioteca compilada por outra pessoa, no meu caso, foi SFML que foi devidamente compilado e então necessária uma DLL que não existe como ele foi compilado com uma versão diferente do MinGW do que o que eu uso. Eu uso uma construção anÃ, esta usou outra, então eu não tinha o DLL em lugar nenhum e, claro, eu não queria que fosse uma estática construir. A solução pode ser encontrar outra construção da biblioteca, ou construí-la você mesmo.

 1
Author: Neil Roy, 2019-06-18 03:45:03

Nas codificações, pode ir à configuração...Compilador... e escolher: 1) os dois itens da caixa azul ou 2) o único item da caixa verde

codeblocks compiler settings

 1
Author: raddevus, 2020-01-08 14:31:18

Se você está Se perguntando onde você pode baixar a biblioteca compartilhada (embora isto não irá funcionar no seu cliente dispositivos a menos que você inclua o dll) aqui está o link: https://de.osdn.net/projects/mingw/downloads/72215/libgcc-9.2.0-1-mingw32-dll-1.tar.xz/

 1
Author: , 2020-06-09 17:58:33

Ao trabalhar com o msys2, obtive o mesmo erro ao tentar executar a versão de lançamento do meu projecto num ambiente de depuração. A solução para o meu problema é óbvia: use executável com símbolos de depuração.

 0
Author: Rubén Pozo, 2018-05-28 09:23:33