libgcc_s_dw2-1.dll이 누락되어 프로그램을 시작할 수 없습니다 Code :: Blocks를 사용하여 C

Code :: Blocks를 사용하여 C ++로 간단한 프로그램을 만들었습니다.

Code :: Blocks에서 실행하면 올바르게 작동합니다. 그러나 실행 파일을 두 번 클릭하여 실행하면 다음 메시지가 표시된 창이 나타납니다.

libgcc_s_dw2-1.dll을 (를) 컴퓨터에서 찾을 수 없어서 해당 프로그램을 시작할 수 없습니다.
이 문제를 해결하려면 프로그램을 다시 설치하십시오.

그래서 무엇이 문제입니까? 문제를 해결하려면 어떻게해야합니까?



답변

나는 이것이 Microsoft Visual Studio 설정이 아니라 MinGW / gcc 컴파일러 문제라고 생각합니다.

libgcc_s_dw2-1.dll컴파일러의 bin 디렉토리에 있어야합니다. 런타임 링크를 위해이 디렉토리를 PATH 환경 변수에 추가하거나 컴파일러 플래그에 “-static-libgcc -static-libstdc ++”를 추가하여 문제점을 피할 수 있습니다.

실행 파일을 배포하려는 경우 후자가 가장 적합합니다. 자신의 컴퓨터에서만 실행하려는 경우 PATH 환경 변수를 변경하는 것이 매력적인 옵션입니다 (실행 파일의 크기를 유지함).

업데이트 :

Greg Treleaven의 의견을 바탕으로 (아래 의견 참조) 다음 링크를 추가합니다.

[Code :: 스크린 샷 “프로젝트 빌드 옵션”차단

[GNU gcc 링크 옵션]

후자의 논의는 포함 -static-libgcc하고 -static-libstdc++링커 옵션.


답변

Eclipse의 프로젝트 특성> C / C ++ 빌드> 설정> MinGW C ++ 링커> 기타에서 찾을 수 있습니다.

맨 위에있는 “링커 플래그”에 추가해야합니다. 다른 곳. 그런 다음 다시 빌드하십시오.

나는 그것들을 정적으로 연결하면 최적화로도 최대 1,400kb의 크기로 폭발한다는 것을 알았습니다. 공유 DLL을 복사하는 것보다 277kb 더 큽니다. UPXing을 한 후에도 388kb 더 큽니다. 여기서 잃어버린 / 잃어버린. 최종 사용자가 DLL을 다른 곳에 설치했는지 여부를 결정할 수 있으므로 DLL을 포함하기 만하면됩니다.


답변

코드 :: 블록 : 설정-> 컴파일러-> 링커 설정-> 다른 링커 옵션에 ‘-static’을 추가하십시오.


답변

PC에서 해당 dll을 찾아 실행 파일이있는 동일한 디렉토리에 복사하십시오.


답변

참고 . 내 문제를 해결했습니다.

그건 그렇고, 분명히 compiler깃발입니까? 어쩌면 linker더 적절한 용어는 여기에있다?


답변

“libgcc_s_dw2-1.dll”를 복사했습니다.는 was.exe입니다. Msys를 사용하는 경우 \ msys \ bin으로 복사하십시오. make.exe의 경로가 env에 설정되어 있는지 확인하십시오. PATH (make.exe가 “bin”폴더에 있고 msys가있는 경우 \ msys \ bin입니다) 컴파일, 실행, 디버그 등 행복합니다.


답변

MinGW http sourceforge.net 트리로 이동하십시오. Home / MinGW / Base / gcc / Version4 (또는 사용중인 버전) / gcc-4 (version) / 아래에 gcc-core-4.8.1-4-mingw32-dll.tar.lzma와 같은 파일이 있습니다. . 그것을 추출하고 libgcc_s_dw2-1.dll 및 기타 dll을 찾을 수있는 bin 폴더로 이동하십시오. 필요한 것을 복사하여 bin 디렉토리에 붙여 넣으십시오.