Acredito que este seja um problema do compilador MinGW / gcc, em vez de uma instalação do Microsoft Visual Studio.
O libgcc_s_dw2-1.dll
deve estar no diretório bin do compilador. Você pode adicionar esse diretório à variável de ambiente PATH para vincular o tempo de execução ou evitar o problema adicionando "-static-libgcc -static-libstdc ++" aos sinalizadores do compilador.
Se você planeja distribuir o executável, o último provavelmente faz mais sentido. Se você planeja executá-lo apenas em sua própria máquina, a alteração da variável de ambiente PATH é uma opção atraente (reduz o tamanho do executável).
Atualizada:
Com base nos comentários de Greg Treleaven (veja os comentários abaixo), estou adicionando links para:
[Captura de tela do Code :: Blocks "Project build options"]
[Opções de link GNU gcc]
A última discussão inclui -static-libgcc
e -static-libstdc++
opções de vinculador.
No Eclipse, você o encontrará nas propriedades do projeto> Compilação C / C ++> Configurações> Vinculador MinGW C ++> Misc
Você deve adicioná-lo aos "sinalizadores do vinculador" na parte superior; em nenhum outro lugar. Então apenas reconstrua.
Descobri que vincular estaticamente explode o tamanho até 1.400kb, mesmo com otimizações. É 277kb maior em comparação com apenas copiar as DLLs compartilhadas. Também é 388kb maior depois de atualizar tudo. Muito perder / perder aqui. Basta incluir as DLLs, pois o usuário final pode decidir excluí-las ou não, caso as tenha instalado em outro local.
fonte
Code :: Blocks: adicione '-static' em settings-> compiler-> Linker settings-> Other linker options.
fonte
Encontre essa dll no seu PC e copie-a no mesmo diretório em que o seu executável está.
fonte
Veja também . Isso resolveu meu problema.
A propósito, é definitivamente
compiler
bandeira? Talvezlinker
seja o termo mais adequado aqui?fonte
Copie "libgcc_s_dw2-1.dll" para o make.exe. (Se você estiver usando o Msys, copie-o para \ msys \ bin) Verifique se o caminho para make.exe está definido no ambiente. CAMINHO (se make.exe estiver em uma pasta "bin", provavelmente e você tiver msys, é \ msys \ bin) Compile, rund, depure etc. feliz.
fonte
Vá para a árvore http MinforW sourceforge.net. Em Home / MinGW / Base / gcc / Version4 (ou qualquer outra versão que o uso esteja usando) / gcc-4 (versão) / você encontrará um arquivo como gcc-core-4.8.1-4-mingw32-dll.tar.lzma . Extraia-o e vá para a pasta bin, onde você encontrará sua libgcc_s_dw2-1.dll e outras DLLs. Copie e cole o que você precisa no diretório bin.
fonte
Consegui superar isso usando "gcc" em vez de "g ++" no meu compilador. Eu sei que isso não é uma opção para a maioria das pessoas, mas pensei em mencioná-lo como uma opção alternativa :)
fonte
Você não pode colocá-lo no system32 ou algo parecido com o que acontece com outros arquivos DLL, para que todo programa que você tenta executar não tenha esse problema na sua máquina?
Eu só preciso do caminho onde colocá-lo.
É meio chato colocá-lo no diretório toda vez que executo um programa que acabei de criar ...
Edit: Encontrei a solução:
fonte
Vá para Configurações >> Compilador e Depurador, clique na guia Configurações do vinculador e vá para o controle de edição "Outras opções do vinculador" e cole: "-static-libgcc -static-libstdc ++", não há opção de sinalizador do compilador nas opções de sinalizadores do compilador para Code :: Blocks, então esse é o caminho para resolver esse problema. Eu também vim aqui procurando uma solução e o cara que postou sobre "-static-libgcc -static-libstdc ++" deu a idéia certa e Eu meio que descobri o resto por acidente, mas funcionou, o arquivo é clicável agora de fora do Code :: Blocks, funciona diretamente da área de trabalho.
fonte
Adicione o caminho para essa dll na variável de ambiente PATH.
fonte
A inclusão de -static-libgcc na linha de compilação resolve o problema
De acordo com: @hardmath
Você também pode criar um alias no seu perfil [.profile] se estiver no MSYS2, por exemplo
Agora seu comando do GCC também passa ;-)
fonte
Adicionar "-static" a outras opções do vinculador resolve esse problema. Eu estava tendo o mesmo problema depois que testei isso em outro sistema, mas não por conta própria; portanto, mesmo que você não tenha notado isso em seu sistema de desenvolvimento, verifique se você tem esse conjunto se estiver vinculando estaticamente.
Outra observação: copiar a DLL para a mesma pasta que o executável não é uma solução, pois derrota a idéia de vincular estaticamente.
Outra opção é usar a versão TDM do MinGW que resolve esse problema.
Atualizar edição: isso pode não resolver o problema para todos. Outra razão que descobri recentemente é que quando você usa uma biblioteca compilada por outra pessoa, no meu caso, foi SFML que foi compilada incorretamente e exigiu uma DLL que não existia, pois foi compilada com uma versão diferente do MinGW do que eu usar. Eu uso uma compilação anã, esta usou outra, então eu não tinha a DLL em lugar algum e, é claro, eu não a queria, pois era uma compilação estática. A solução pode ser encontrar outra compilação da biblioteca ou criar você mesmo.
fonte
Trabalhando com o msys2, obtive o mesmo erro ao tentar executar a versão do meu projeto em um ambiente de depuração. A solução para o meu problema é óbvia: use executável com símbolos de depuração.
fonte
No CodeBlocks, você pode acessar Configurações ... Compilador ... e escolher 1) os dois itens na caixa azul ou 2) o item na caixa verde
fonte
Se você está se perguntando onde é possível baixar a biblioteca compartilhada (embora isso não funcione nos dispositivos do seu cliente, a menos que você inclua a dll), aqui está o link: https://de.osdn.net/projects/mingw/downloads/72215/ libgcc-9.2.0-1-mingw32-dll-1.tar.xz /
fonte