sourcecode

libgcc_s_dw2-1.dll이 없기 때문에 프로그램을 시작할 수 없습니다.

codebag 2023. 4. 18. 22:38
반응형

libgcc_s_dw2-1.dll이 없기 때문에 프로그램을 시작할 수 없습니다.

C++에서 코드:를 사용하여 간단한 프로그램을 만들었습니다.블록

Code에서 실행하는 경우:블록은 정상적으로 동작합니다만, 실행 파일을 더블 클릭 해 실행하면, 다음의 메세지가 표시됩니다.

.dll에 없기 때문에 프로그램을 시작할 수 없습니다.
이 문제를 해결하려면 , 프로그램을 재인스톨 해 주세요.

그럼 뭐가 문제인가요?고치려면 어떻게 해야 하나요?

Microsoft Visual Studio 셋업이 아닌 MinGW/gcc 컴파일러의 문제라고 생각합니다.

libgcc_s_dw2-1.dll빈 빈으로 이 디렉토리를 추가하거나 과 같이 회피할 수 .

-static -static-libgcc -static-libstdc++

컴파일러 플래그와 링커 플래그로 이동합니다.

실행 파일을 배포할 계획이라면 후자가 가장 적합합니다.자신의 머신에서만 실행할 계획이라면 PATH 환경변수를 변경하는 것이 좋습니다(실행 파일의 크기를 줄입니다).

갱신일 :

Greg Treleaven(아래 코멘트 참조)의 피드백을 바탕으로 다음 링크를 추가합니다.

[코드 스크린샷:"프로젝트 빌드 옵션" 차단

[GNU gcc 링크 옵션]

후자의 논의에는 다음이 포함됩니다.-static-libgcc ★★★★★★★★★★★★★★★★★」-static-libstdc++링커 옵션

Eclipse ties 、 [ Project Properties ]> [ C / C + + Build ]> [ Settings ]> [ MinGW C + + Linker ]> [ Misc ]에 있습니다.

맨 위에 있는 "linker flags"에 추가해야 합니다.다른 곳은 없습니다.그럼 그냥 재구축해.

Eclipse 속성 스크린샷

정적으로 링크하면 최적화를 해도 1,400kb까지 사이즈가 폭발합니다.공유 DLL을 통해 복사하는 것보다 277kb 더 큽니다.UPX 처리 후 388kb도 커졌습니다.여기서 져버린다/잃어버리다.최종 사용자가 DLL을 삭제할지 여부를 결정할 수 있으므로 DLL을 포함하기만 하면 됩니다.

코드:: 블록: 설정 -> 컴파일러 -> 링커 설정 -> 기타 링커 옵션에서 "-static"을 추가합니다.

「」도 참조해 주세요.그것으로 내 문제가 해결되었다.

by건, by by by by by by by by by?compiler ?? ? 어쩌면linker기서서 더절? 어??? ????

PC에서 해당 dll을 찾아 실행 파일이 있는 디렉터리에 복사합니다.

"libgcc_s_dw2-1.dll"을 복사했습니다.exe는 (Msys를 사용하는 경우 \msys\bin에 복사) 작성할 경로가 있는지 확인합니다.exe는 env. PATH로 설정됩니다(make인 경우).exe는 "bin" 폴더에 있을 가능성이 높으며 msys, \msys\bin) 컴파일, 런드, 디버깅 등이 있습니다.

MinGW http sourceforge.net 트리로 이동합니다.Home/MinGW/Base/gcc/Version4(또는 사용하고 있는 버전에 관계없이)/gcc-4(버전)/아래에 gcc-core-4.8.1-4-mingw32-dll.tar.lzma와 같은 파일이 있습니다.압축을 풀고 libgcc_s_dw2-1.dll 및 기타 dll이 있는 bin 폴더로 이동합니다.필요한 파일을 복사하여 bin 디렉토리에 붙여넣습니다.

컴파일러에 "g++" 대신 "gcc"를 사용함으로써 이를 극복할 수 있었습니다.대부분의 사용자에게는 이 옵션이 선택사항이 아닌 것은 알지만, 회피책으로 언급하고 싶습니다.

실행하려는 모든 프로그램이 머신에서 해당 문제를 일으키지 않도록 system32나 다른 dll 파일을 사용하는 것과 같은 방법으로 저장할 수 없습니까?

어디다 둘지 길만 있으면 돼

새로 만든 프로그램을 실행할 때마다 디렉토리에 넣기가 좀 귀찮아...

편집: 솔루션을 찾았습니다.

libgcc_s_dw2-1.dll을 컴퓨터 위치에 압축을 풉니다.libgcc_s_dw2-1.dll을 요구하는 프로그램의 디렉토리에 압축을 푸는 것이 좋습니다.

이 방법으로 동작하지 않으면 시스템디렉토리에 libgcc_s_dw2-1.dll 압축을 풀어야 합니다.기본적으로는 다음과 같습니다.

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

64비트 버전의 Windows 를 사용하고 있는 경우는, C 에 libgcc_s_dw2-1.dll 도 배치할 필요가 있습니다.\Windows\SysWOW64\

기존 파일을 덮어쓰되 원본 파일의 백업 복사본을 만드십시오.컴퓨터를 리부팅하세요.

그래도 문제가 발생할 경우 다음 절차를 따릅니다.

  • Windows 시작 메뉴를 열고 "실행..."을 선택합니다.
  • CMD를 입력하고 Enter 키를 누릅니다(또는 윈도우즈 Me를 사용하는 경우 COMMAND를 입력합니다).
  • regsvr32 libgcc_s_dw2-1.dll을 입력하고 Enter 키를 누릅니다.

설정 >으로 이동합니다.> 컴파일러와 디버거의 [Linker Settings]탭을 클릭하여 [Other linker options](기타 링커 옵션) 편집 컨트롤과 페이스트: "-static-libgcc -static-libstdc+"로 이동합니다.코드용 컴파일러 플래그 옵션에는 컴파일러 플래그 옵션이 없습니다.이 문제를 해결할 수 있도록 블록합니다.솔루션을 찾고 있는데, "static-libgcc -static-libstdc+"에 대해 게시한 한 사람이 올바른 아이디어를 냈습니다.그리고 나머지는 우연히 알아냈지만, 지금은 외부에서 파일을 클릭할 수 있습니다.코드:데스크톱에서 바로 사용할 수 있는 블록입니다.

해당 dll에 대한 경로를 PATH 환경변수에 추가합니다.

CodeBlocks에서 Settings로 이동할 수 있습니다.컴파일러...1) 파란 상자 안에 있는 2개의 아이템 또는 2) 초록색 상자 안에 있는1개의 아이템 중 하나를 선택합니다.

코드 블록 컴파일러 설정

공유 라이브러리를 다운로드 할 수 있는 장소가 궁금하신 경우(dll을 포함하지 않는 한 클라이언트 디바이스에서는 동작하지 않습니다).https://de.osdn.net/projects/mingw/downloads/72215/libgcc-9.2.0-1-mingw32-dll-1.tar.xz/ 를 참조해 주세요.

다른 링커 옵션에 "-static"을 추가하면 이 문제가 해결됩니다.다른 시스템에서 테스트한 후에도 같은 문제가 발생했지만, 자체 테스트에서는 발생하지 않았습니다.따라서 개발 시스템에서 이 문제를 눈치채지 못하셨더라도 정적으로 링크하고 있다면 이 세트가 있는지 확인해야 합니다.

또, DLL을 실행 파일과 같은 폴더에 카피하는 것은, 정적으로 링크 하는 생각을 무효로 하기 때문에, 해결책이 되지 않습니다.

또 하나의 옵션은 이 문제를 해결하기 위해 MinGW의 TDM 버전을 사용하는 것입니다.

업데이트 편집: 모든 사용자가 이 문제를 해결할 수 있는 것은 아닙니다.최근에 발견한 또 다른 이유는 다른 사람이 컴파일한 라이브러리를 사용하는 경우입니다.저의 경우 SFML이 부적절하게 컴파일되어 있기 때문에 제가 사용하는 것과 다른 버전의 MinGW로 컴파일 되어 있기 때문에 존재하지 않는 DLL이 필요했습니다.저는 Drwarf build를 사용하고 있는데, 이것은 다른 빌드를 사용하고 있기 때문에 DLL은 어디에도 없었고, 물론 정적 빌드였기 때문에 DLL은 필요 없었습니다.해결책은 라이브러리의 다른 빌드를 찾거나 직접 구축하는 것입니다.

컴파일 행에 -static-libgcc를 포함하면 문제가 해결됩니다.

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

설명: @hardmath

MSYS2 를 사용하고 있는 경우는, 프로파일[ .profile ] 에 에일리어스를 작성할 수도 있습니다.

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

이제 GCC 명령도 통과합니다;-)

터미널을 재시작해야 합니다.

순서 1: 설정-static-libgcc ★★★★★★★★★★★★★★★★★」-static-libstdc++ 설정하거나 합니다.-static을 들다settings -> compiler -> global compiler settings | Compiler settings | Compiler Flags

2단계(다른 답변에서 강조되지 않음):빌드 및 실행 전에 빌드를 청소하십시오.클리닝을 하지 않으면 프로젝트를 재구축하고 있다고 생각할 수 있지만 같은 .exe가 됩니다.클리닝은, 특히, 에 있는 파일을 삭제합니다.bin그리고.obj작성 시 새로운 파일세트가 작성되도록 합니다.bin그리고.obj폴더입니다.

msys2를 사용하여 작업할 때 디버깅 환경에서 프로젝트의 릴리스 버전을 실행하려고 할 때 동일한 오류가 발생했습니다.이 문제의 해결책은 명백합니다.디버깅 기호와 함께 실행 파일을 사용합니다.

언급URL : https://stackoverflow.com/questions/4702732/the-program-cant-start-because-libgcc-s-dw2-1-dll-is-missing

반응형