x64 코드로 컴파일되지만 x64 코드로 별도의 버전으로도 컴파일되는 응용 프로그램이 있습니다. 이 응용 프로그램은 기본적으로 C# 관리되는 exe와 C++ 관리되지 않는 dll의 두 부분으로 구성됩니다. 나는 후자에 문제가있다. 내 개발 PC (Windows 7 64 비트, Visual Studio 2008)에서는 배포 프로젝트로 설치 프로그램을 만들고이 설치 프로그램은 프로그램 파일에 응용 프로그램을 설치합니다. 나는 또한 시험용 PC (Windows 7 64-bit)를 가지고있다. 거기에 응용 프로그램이 여전히 프로그램 파일에 설치되지만 실행되지 않습니다. 관리되지 않는 DLL의 함수 (모든 함수)가 호출 될 때 BadImageFormatException이 발생합니다. 문제는 dll을 생성하는 내 자신의 프로젝트도 상당히 자유롭게 사용할 수있는 라이브러리 (예 : glew32, openal, freeimage 등)를 사용한다는 것입니다. 이러한 x64 버전을 사용할 수 있도록 많은주의를 기울였습니다. 라이브러리가 있지만 여전히 잘못된 것이 있어야합니다. 어떤 이유로 든 내 DLL에서 사용하는 라이브러리 중 하나가 테스트 PC에서 x64 코드로 사용할 수 없지만 개발 PC에 있습니다. 적어도 내 설정이 개발 PC에서는 작동하지만 테스트 PC에서는 작동하지 않는 유일한 설명입니다. 내 질문은 : 어떻게 문제가 있는지 알 수 있습니다. 받은 오류 메시지가 도움이되는 세부 정보를 제공하지 않습니다. 나는 의존하고 내 dll을 분석하려했지만 괜찮아 보입니다. 그것은 의존 라이브러리를 X86 (아마도 이것은 시스템 파일 일 것입니다)으로 나열하지만, 의도적으로 사용하는 모든 라이브러리는 x64로 나열됩니다. 내 테스트 PC의 Windows가 x64이어야하더라도 x86 코드로 DLL을 실행하려고하는 이유를 테스트 할 방법이 있습니까? 감사합니다. .기본 x64 dll이 작동하지 않습니다.
뭔가 이상한 것으로 나타났습니다. x64 응용 프로그램 용이므로 응용 프로그램 파일 폴더에 내 응용 프로그램을 배포하고 있지만 실행에 실패했습니다. 그러나 설치된 폴더에있는 모든 파일을 다른 폴더 (Documents 폴더 내부)에 복사하면 응용 프로그램이 완벽하게 실행됩니다.
SysInternals 'ProcMon 유틸리티를 사용하여 정확히 어떤 DLL이 있는지 확인하십시오. –