애플리케이션을 올바르게 기동할 수 없었습니다(0xc000007b).
한 대의 PC로 개발 중인 클라이언트/서버 앱이 있습니다.지금은 시리얼 포트가 2개 필요하기 때문에 친구로부터 PC를 빌렸습니다.
앱을 빌드하여 실행 또는 디버깅하려고 하면(Delphi IDE에서든 Windows 파일 관리자에서든) "The application was not cannot to start ( 0xc000007b)" 오류가 발생합니다.
구글링은 별로 말을 꺼내지 않지만, 이것은 델파이 특유의 것이 아니고, 다른 앱에서도 일어나고 있는 것을 나타내고 있는 것 같습니다.64비트 앱에서 32비트 DLL을 호출하거나 그 반대일 수 있습니다.
- 두 PC 모두 Windows 7, 64비트
- 둘 다 32비트만 처리할 수 있는 Delphi Xe2 스타터 에디션을 가지고 있습니다.
- 내 PC에서는 앱이 정상적으로 실행되지만 내 친구 PC에서는 실행되지 않는다.
- 다른 Delphi 앱은 양쪽 PC에서 정상적으로 동작합니다.
이걸 어떻게 찾을 수 있는지 힌트 줄 사람?
일반적으로 우리는0xC000007B 코드(에러 코드, 에러 코드,STATUS_INVALID_IMAGE_FORMAT ), 음음음 、 음 ), ), :
- 32비트 앱이 64비트 DLL을 로드하려고 했을 경우.
- 또는 64비트 응용 프로그램이 32비트 DLL을 로드하려고 시도한 경우.
- 또는 64비트 앱이 32비트 Windows에서 실행되도록 시도한 경우.
실제로 알기 위해서는 의존관계 워커를 사용하여 어플리케이션과 의존관계 사이에 문제가 있는지 테스트할 것을 제안합니다.
이 도구를 사용하여 앱을 열면 화면 맨 아래에 빨간색 로그 항목으로 문제가 표시됩니다.
(적어도 2022년)
또한 올바른 버전의 Dependency Walker를 실행해야 합니다. 예를 들어 x86 버전은 x64 바이너리를 열 때 잘못된 결과를 표시합니다.
로드 시간 종속성을 해결할 수 없습니다.이를 디버깅하는 가장 쉬운 방법은 Dependency Walker를 사용하는 것입니다.[ Profile ]옵션을 사용하여 로드 프로세스의 진단 출력을 가져옵니다.이를 통해 장애 지점을 식별하고 해결 방법을 찾을 수 있습니다.
이 에러의 가장 일반적인 원인은 64비트 DLL을 32비트 프로세스에 로드하려고 하는 경우 또는 그 반대입니다.
여기에 명기되어 있는 것을 모두 시험해 보고 또 다른 답을 찾았습니다.DLL.32 DLL로 .했지만 32비트 64비트로 라이브러리를 했습니다.PATH64번어플리케이션을 다시 컴파일한 후(코드 변경도 다수 포함) 이 끔찍한 오류가 발생하여 이틀 동안 고생했습니다.밖에 가지 결국 '', '아까', '아까', '아까', '아까', '아까'PATH64' DLL '32' DLL 'dll' ('DLL')그리고 그것은 성공하였다.나는 단지 완성도를 위해 여기에 그것을 추가하는 것이다.
dll이 없습니다.com 포트와 함께 작동하는 dll은 해결되지 않은 dll 종속성을 가지고 있을 수 있습니다.종속성 워커 및 윈도우즈 디버거를 사용할 수 있습니다.예를 들어 모든 mfc 라이브러리를 확인합니다.또한 nrCommlib을 사용할 수도 있습니다.이것은 com 포트를 사용하는 데 매우 좋은 컴포넌트입니다.
이전 답변에서 Dependency Walker를 사용하는 것이 최선의 방법이라고 언급되어 있습니다.이 경우(어플리케이션이 에러 코드를 사용하여 계속 실패), Dependency Walker는 관련이 없는 몇 개의 dll을 표시했습니다.
프로파일링 메뉴를 실행하면 어플리케이션이 실행되어 문제의 원인이 되고 있는 dll에서 정지하는 것을 알았습니다.경로 때문에 32비트 dll이 선택되어 수정되었습니다.
Microsoft Visual Studio 2012를 사용한 클라이언트 서버 앱 개발에서도 같은 문제가 발생했습니다.
Visual Studio를 사용하여 앱을 개발한 경우 새 컴퓨터(소프트웨어가 개발되지 않은 컴퓨터)에 적절한 Microsoft Visual C++ 재배포 가능 패키지가 있는지 확인해야 합니다.적절한 Visual C++ 재배포 가능 패키지의 연도 및 비트 버전(32비트의 경우 x86, 64비트의 경우 x64)이 필요합니다.
Visual C++ 재배포 가능 패키지는 Visual Studio를 사용하여 빌드된 C++ 응용 프로그램을 실행하는 데 필요한 런타임 구성 요소를 설치합니다.
다음은 Visual C++ Redistributable for Visual Studio 2015 링크입니다.
설치되어 있는 버전을 확인하려면 [컨트롤 패널]-> [프로그램]-> [프로그램 및 기능]으로 이동합니다.
이 오류를 수정한 방법은 다음과 같습니다.
1) Visual Studio 2012를 사용하여 32비트 어플리케이션을 개발하였습니다.내 컴퓨터를 ComputerA라고 부르자.
2) .exe 와 관련 파일을 Computer B 라고 하는 다른 컴퓨터에 인스톨 했습니다.
3) Computer B에서 .exe를 실행했더니 오류 메시지가 떴습니다.
4) Computer B에서 프로그램 및 기능을 살펴보니 Visual C++ 2012 Redistributable(x64)이 보이지 않습니다.
5) Computer B에서 Visual C++ 2012 Redistributable을 검색하여 x64 버전을 선택하여 설치했습니다.
6) Computer B에서 Computer B에서 .exe를 실행했는데 오류 메시지가 표시되지 않았습니다.
최근 어플리케이션(시리얼 포트를 사용하는 것)을 개발 중 문제가 발생하여 테스트한 모든 머신에서 동작했습니다만, 이 에러가 발생하는 사람이 몇 명 있었습니다.
에러가 발생한 모든 머신은 Windows 7 x 64를 실행하고 있으며, 한 번도 업데이트 된 적이 없는 것으로 나타났습니다.
Windows Update를 실행하면 특정 케이스의 모든 머신이 수정되었습니다.
실제로 이 오류는 잘못된 이미지 형식을 나타냅니다.하지만, 왜 이런 일이 일어나는지, 그리고 보통 에러 코드는 무엇을 의미합니까?실제로 64비트 Windows 운영체제용으로 제작되었거나 64비트 운영체제에서 작동하도록 설계된 프로그램을 실행하려고 할 때 컴퓨터가 32비트 운영체제 상에서 실행되고 있을 때 발생할 수 있습니다.
생각할 수 있는 이유:
- Microsoft Visual C++
- 재기동 필요
- 다이렉트X
- .NET 프레임워크
- 재설치 필요
- 관리자 권한으로 응용 프로그램 실행 필요
출처 : http://www.solveinweb.com/solved-the-application-was-unable-to-start-correctly-0xc000007b-click-ok-to-close-the-application/
디버거 디버깅이 도움이 될 수 있습니다.기본적으로 이 지시에 따라 두 개의 ide를 실행할 수 있으며 하나는 다른 하나의 ide로 디버깅됩니다.응용 프로그램을 하나로 해제하면 놓칠 수 있는 오류를 발견할 수 있습니다.시도해 볼 가치가 있다.
Visual C++가 설치되어 있지 않은 머신에서 VC++ 디버깅 실행 파일을 실행하려고 하면 오류가 발생하였습니다.릴리스 버전을 구축하여 이를 수정한 버전을 사용합니다.
내 경우 DLL을 빌드(Visual Studio 2015 사용)한 후 DLL이 예상하는 이름과 일치하도록 DLL 이름을 변경했을 때 오류가 발생했습니다. Dependency Walker에 의해 표시된 내보내기 기호 목록의 이름이 비어 있으면「The application was not cannot to start brongly」라고 하는 에러 메세지가 표시됩니다.
따라서 Visual Studio 링커 옵션에서 출력 파일 이름을 변경하여 수정할 수 있습니다.
애플리케이션에 Microsoft 에 의존하고 있는 것을 나타내려고 하는 경우는, 이것을 사용할 수 있습니다.윈도공통-어셈블리를 제어합니다.이 작업은 공통 컨트롤 라이브러리의 버전 6을 로드하려는 경우 수행하므로 시각적 스타일이 공통 컨트롤에 적용됩니다.
Windows XP 시절부터 Microsoft의 오리지널 매뉴얼을 따라 어플리케이션 매니페스트에 다음을 추가했을 가능성이 있습니다.
<!-- Dependancy on Common Controls version 6 -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
Windows XP는 OS가 아니며 32비트 어플리케이션도 아닙니다.17년 동안 마이크로소프트는 문서를 업데이트했습니다. 이제 매니페스토를 업데이트할 때입니다.
<!-- Dependancy on Common Controls version 6 -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
Raymond Chen은 Common Controls의 훌륭한 역사를 가지고 있습니다.
물론 주요 문제는 DLL 파일이 없거나 손상되었을 가능성이 높다는 것입니다.이 경우 좋은 아이디어가 있습니다(특히 DLL을 수동으로 다운로드하여 설치한 경우).
TLDR: 수동으로 복사/붙여넣은 모든 DLL을 삭제하고, 오래된 재배포 가능 설치를 제거하고, 32비트 설치와 64비트 설치 모두에 대해 새로운 재배포 가능 설치를 수행합니다.
무엇을 할지
을 "DLL"에 복사 이 system32등, 1990년대 이후부터 기능하고 있었지만, 지금은 기능하지 않는 것 같습니다(2020년).따라서 최근에 이 문제에 부딪혔을 경우 다음을 권장합니다.
- ★★★내
windows\system32★★★★★★★★★★★★★★★★★」windows\SysWOW64에 파일을ms*.dlladmin으로 할 수 - Windows 에 탑재되어 있는 모든 Visual C++ 재배포 가능 파일을 언인스톨 합니다.이것에 의해, 재인스톨시에 「You are have this!」다이얼로그가 표시되지 않게 됩니다(재인스톨시의 다음의 순서에서 상술).
- 정기적으로 이용 가능한 다운로드 사이트에서 2015-2019 Visual C++ Redistributable을 다시 설치합니다.그래도 되지 않으면 다른 것을 다운로드하여 설치하세요. 하지만 개인적으로 2015-2019는 저에게 모든 것을 커버해 주었습니다.사용하시는 머신에 관계없이 x32 패키지와 x64 패키지를 모두 설치합니다.(모든 다운로드 링크: 수집 VC++ 다운로드 링크, MSVCR120.dll 수정, MFC140U.dll 수정).
작동 방법
코더는 매우 다양하기 때문에 하나의 가능한 솔루션이 있다는 생각은 종종 버려지지만 긍정적으로 생각합시다!
- 하는 「」를 .
ms*.dll작동하면 더 .error code 0xc000007b,aa a . . . . . . . . . . . . . . . . . . . . . . . . . 。.dll올바른 코드 패스를 사용하고 있음을 나타냅니다. - 로 정상적으로하는 경우,이 상기의 「」, 「 」 、 「 」 、 「」에 됩니다.
system32★★★★★★★★★★★★★★★★★」SysWO64다음과 같습니다.MSVCR120.dll,MSVCR140.dll,MSVCR100.dll,MSVCP100.dll,MSVCP120.dll,MSVCP140.dll
마지막, 가능한 최고의 기회
(Windows 세상에서는 누구나 알고 있듯이) 모든 것이 계획대로 작동하지 않을 수 있습니다.다음 것도 시도해 보세요!
- Windows(Windows 8-10) "Windows 기끄 / Windows 기끄끄 windows" 마크를 떼다
.NET Framework인스톨 합니다.작은 설치물이 지나가는 것을 볼 수 있을 것이다. - 시스템을 재기동합니다. 한 번 가셔서 다시 한 번 확인해보시기 바랍니다.
.NET Framework을 설치 및 업데이트NET framework'를 참조해 주세요.이 작업이 완료되면 다시 부팅할 것을 권장합니다.
행운을 빕니다.
제 개인 프로젝트의 문제를 방금 해결했습니다(드리스 덕분에).저에게는 프로젝트 경로가 너무 길었기 때문입니다..sln을 더 짧은 경로(C:/MyProjects)에 저장하고 거기에서 컴파일하면 오류 없이 실행됩니다.
또, 「Dependencies(의존관계)」를 다운로드해, wget.exe 를 격납한 폴더에 압축을 푼다.
http://gnuwin32.sourceforge.net/packages/wget.htm
그러면 lib*.dll 파일 및 wget 파일이 생성됩니다.exe가 같은 폴더에 있으면 정상적으로 동작합니다.
(처음 찾은 https://superuser.com/a/873531/146668에도 답변했습니다.)
방금 이 문제에 부딪혔어요.Windows 10 제어판의 「Apps & Features」아래에서 「C++」를 검색해 보니, 몇일전에 업데이트가 실행되어 VC++Redistributable 2012-2017이 인스톨 되고 있는 것을 알 수 있었습니다.오류 메시지가 표시된 앱에는 VC++ 2010만 필요했습니다.모두 제거하고 2010 x86/x64만 재설치하면 오류는 해소되고 어플리케이션은 정상적으로 동작합니다.
어떤 이유로 x86 리소스가 x64 시스템에서 로드된 경우 이 문제가 발생할 수 있습니다.이를 명시적으로 회피하려면 이 프리프로세서 디렉티브를 stdafx.h에 추가합니다(물론 이 예에서는 문제가 되는 리소스가 Windows Common Controls DLL입니다).
#if defined(_WIN64)
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df'\"")
#endif
시스템에 여러 버전의 dll이 있을 수 있습니다.시스템을 검색하여 확인할 수 있습니다.이 문제는 경로 내 디렉토리의 순서를 변경하는 것만으로 해결할 수 있습니다.이것이 문제였습니다.(Qt 이외에서는 Qt Creator GUI를 실행할 수 없습니다.「어플리케이션은 올바르게 기동할 수 없었습니다(0xc000007b).」에러)
저장소에서 코드를 가져와 새 컴퓨터에서 컴파일할 때 이 문제가 발생했습니다.저장소 전체를 복사한 후 컴파일하면 실행 가능한 파일이 생성되었습니다.32비트 DLL이 실수로 체크인되지 않았습니다.위의 사람들이 말하는 것처럼 "Dependency Walker"를 사용하여 어디가 잘못되었는지 파악합니다.
검색 대상을 보다 명확하게 하기 위해 다음 스크린샷을 참조하십시오.배경에서는 잘못된 DLL('64'에 주목)을 로드하려고 하면 "애플리케이션이 올바르게 시작할 수 없었습니다"가 발생하고, 포그라운드에서는 단순히 복사된 exe(올바른 DLL 포함)가 표시됩니다.
"golang Windows (0xc00007b)"를 찾고 있을 때 왔습니다.
저는 골랑어로 된 iconv를 사용하는 앱을 가지고 있습니다.내 기계에서는 작동했지만 다른 사람의 기계에서는 작동하지 않았다.
첫 번째 오류는 DLL: libiconv-2.dll이 누락되어 있기 때문에 인터넷에서 다운로드 받은 것 같습니다만, 64비트 버전이 아닌 32비트이기 때문에 0xc00007b 오류가 발생하였습니다.
시스템에서 DLL을 검색했지만 MinGW 64 경로에서 검색할 때까지 성공하지 못했습니다.이 경우 다음과 같습니다.C:\msys64\mingw64\bin
해결책은 MinGW 폴더에 있는 .exe와 함께 DLL을 배포하는 것이었습니다.
언급URL : https://stackoverflow.com/questions/10492037/the-application-was-unable-to-start-correctly-0xc000007b
'programing' 카테고리의 다른 글
| Eclipse는 리소스를 자동으로 새로 고칠 수 있습니까? (0) | 2023.04.24 |
|---|---|
| 한 시트에서 다른 시트로 n번째 줄마다 복사 (0) | 2023.04.24 |
| VBA 날짜(정수) (0) | 2023.04.24 |
| 프로그램 시작 후 콘솔을 열지 않고 배치 파일에서 프로그램을 실행하려면 어떻게 해야 합니까? (0) | 2023.04.24 |
| WPF ListBox의 ItemTemplate와 ItemContainerStyle의 차이점은 무엇입니까? (0) | 2023.04.24 |

