[windows] 응용 프로그램을 올바르게 시작할 수 없습니다 (0xc000007b)

단일 PC에서 개발 한 클라이언트 / 서버 앱이 있습니다. 이제 두 개의 직렬 포트가 필요하므로 친구로부터 PC를 빌 렸습니다.

앱을 빌드하고 실행하거나 디버깅하려고하면 (Delphi IDE 또는 Windows 파일 관리자에서) “응용 프로그램을 제대로 시작할 수 없습니다 (0xc000007b)”오류가 발생합니다.

인터넷 검색은 많은 것을 가져 오지 않지만 델파이에만 해당되는 것은 아니며 다른 앱에서 발생한다는 것을 나타냅니다. 64 비트 응용 프로그램에서 32 비트 DLL을 호출하거나 그 반대로 인해 발생하는 것으로 보입니다.

  • 두 PC 모두 Windows 7, 64 비트
  • 둘 다 32 비트 만 처리 할 수있는 Delphi Xe2 스타터 에디션이 있습니다.
  • 내 PC에서는 앱이 제대로 실행되지만 친구의 컴퓨터에서는 실행되지 않습니다.
  • 다른 델파이 앱은 두 PC 모두에서 잘 작동합니다.

아무도 이것을 추적하는 방법에 대한 힌트를 줄 수 있습니까?



답변

시작하려면 종속성 워커를 사용하여 응용 프로그램과 종속성 사이에 문제가 있는지 테스트하는 것이 좋습니다.


답변

로드 시간 종속성을 해결할 수 없습니다. 이를 디버깅하는 가장 쉬운 방법은 Dependency Walker 를 사용하는 것 입니다. 로드 옵션의 진단 출력을 얻으려면 프로파일 옵션을 사용하십시오. 이것은 실패 지점을 식별하고 솔루션으로 안내해야합니다.

이 오류의 가장 일반적인 원인은 64 비트 DLL을 32 비트 프로세스로로드하거나 그 반대로로드하는 것입니다.


답변

누락 된 dll입니다. 아마도 COM 포트와 작동하는 dll은 dll 의존성을 해결하지 못했을 것입니다. 종속성 워커 및 Windows 디버거를 사용할 수 있습니다. 예를 들어 모든 mfc 라이브러리를 확인하십시오. 또한 nrCommlib를 사용할 수 있습니다. com 포트와 함께 사용할 수있는 훌륭한 구성 요소입니다.


답변

나는 여기에 명시된 모든 것을 시도하고 또 다른 대답을 찾았습니다. 32 비트 DLL로 응용 프로그램을 컴파일해야했습니다. 32 비트와 64 비트로 라이브러리를 구축했지만 PATH64 비트 라이브러리로 설정했습니다. 내 응용 프로그램을 다시 컴파일 한 후 (코드도 많이 변경됨)이 무서운 오류가 발생하여 이틀 동안 어려움을 겪었습니다. 마지막으로, 다른 많은 것들을 시도한 후에 PATH64 비트 DLL 앞에 32 비트 DLL을 갖도록 변경 했습니다 (같은 이름을 가짐). 그리고 효과가있었습니다. 완전성을 위해 여기에 추가하고 있습니다.


답변

이전 답변에서 종속성 워커를 사용하는 것이 좋은 방법이라고 언급했습니다. 제 경우 (응용 프로그램이 오류 코드로 계속 실패합니다), 종속성 워커는 관련이없는 몇 가지 dll을 보여주었습니다!

마지막으로 “프로파일”메뉴로 이동하여 프로파일 링을 실행할 수 있으며 응용 프로그램을 실행하고 문제를 일으키는 정확한 dll에서 중지합니다. 32 비트 dll이 경로 때문에 선택되어 수정되었음을 알았습니다.

여기에 이미지 설명을 입력하십시오


답변

나는 최근에 (직렬 포트를 사용하는) 응용 프로그램을 개발하는 데 문제가 있었고 테스트 한 모든 컴퓨터에서 작동했지만 몇 사람 이이 오류를 겪고있었습니다.

오류가 발생한 모든 컴퓨터가 Win7 x64를 실행 중이며 절대 업데이트가 없었습니다.

Windows 업데이트를 실행하면 특정 경우에 모든 컴퓨터가 해결되었습니다.


답변

Microsoft Visual Studio 2012를 사용하여 클라이언트-서버 앱을 개발할 때도 같은 문제가 발생했습니다.

Visual Studio를 사용하여 앱을 개발 한 경우 새 소프트웨어 (예 : 소프트웨어가 개발되지 않은 컴퓨터)에 적절한 Microsoft Visual C ++ 재배포 가능 패키지가 있는지 확인해야합니다. 적절하게는 Visual C ++ 재배포 가능 패키지의 올바른 연도 및 비트 버전 (32 비트의 경우 x86 및 64 비트의 경우 x64)이 필요합니다.

Visual C ++ 재배포 가능 패키지는 Visual Studio를 사용하여 빌드 된 C ++ 응용 프로그램을 실행하는 데 필요한 런타임 구성 요소를 설치합니다.

다음은 Visual Studio 2015 용 Visual C ++ 재배포 가능 패키지에 대한 링크 입니다.

제어판-> 프로그램-> 프로그램 및 기능으로 이동하여 설치된 버전을 확인할 수 있습니다.

이 오류가 발생하여 수정 한 방법은 다음과 같습니다.

1) 컴퓨터에서 Visual Studio 2012를 사용하여 32 비트 응용 프로그램을 개발했습니다. 내 컴퓨터를 ComputerA라고하겠습니다.

2) .exe 및 관련 파일을 ComputerB라고하는 다른 컴퓨터에 설치했습니다.

3) ComputerB에서 .exe를 실행하고 오류 메시지가 나타납니다.

4) ComputerB에서 프로그램 및 기능을 살펴본 결과 Visual C ++ 2012 재배포 가능 패키지 (x64)가 표시되지 않았습니다.

5) ComputerB에서 Visual C ++ 2012 재배포 가능 패키지를 검색하고 x64 버전을 선택하여 설치했습니다.

6) ComputerB의 ComputerB에서 .exe를 실행했는데 오류 메시지가 나타나지 않습니다.