2014-01-25 2 views
4

내 C++ SFML 32 비트 프로그램의 내 exe 파일을 실행하려고하면 "응용 프로그램을 올바르게 시작할 수 없습니다 (0xc000007b)"오류가 발생했습니다. 비주얼 스튜디오 2012는 나는 정적으로 내 프로젝트의 SFML DLL을 연결,하지만 내 프로그램과 함께 다음과 같은 DLL을 통합 :VS2012 오류 : 응용 프로그램을 올바르게 시작할 수 없습니다 (0xc000007b)

libsndfile-1.dll 
openal32.dll 
msvcp110.dll 
msvcp110d.dll 
msvcr110.dll 
msvcr110d.dll 

문제가 무엇입니까?

+0

msvcr110d.dll - 디버그 빌드 용입니다. MSVC++ 2012 재배포 가능 패키지를 설치하십시오. – neagoegab

답변

10

실제 발생한 오류 코드는 0xC000007B입니다. 즉, NTSTATUS 오류 코드 STATUS_INVALID_IMAGE_FORMAT입니다. 응용 프로그램이 32 비트이고 64 비트 모듈을로드하려고 시도했거나 그 반대의 경우도 있으므로이 오류는 거의 항상 발생합니다. 귀하의 경우, 귀하의 응용 프로그램은 32 비트라고되어 있으므로 64 비트 DLL에 연결하려고 시도하는 것으로 보입니다. Dependency Walker와 같은 도구를 사용하여 잘못된 비트가있는 모듈을 진단하십시오.

MSVC 런타임의 릴리스 버전과 디버그 버전을 모두 배포하는 이유를 알지 못합니다. 당신은 하나만 있으면되고, 그 하나는 릴리스 버전이어야합니다. d 끝나는 파일은 디버그 버전입니다. 당신은 그들을 재배 포할 수 없습니다.

+1

@user 당신은 여전히 ​​붙어 있습니까? –

+0

아니요, 문제가 해결되었습니다. 당신의 도움을 주셔서 감사합니다. – user3236245

+1

그리고 문제는 무엇 이었습니까? –

3

오류 코드 0xC000007B 정적 라이브러리 인 .lib 파일과 달리 .dll에 해당하는 가져 오기 라이브러리 인 .lib 파일과 정적으로 연결된 응용 프로그램을 실행하면 오류 코드 이 발생할 수도 있습니다. . 정적 라이브러리와 가져 오기 라이브러리의 차이점에 대해 자세히 알고 싶다면 Why are LIB files beasts of such a duplicitous nature?

관련 문제