약 5 년 전에 만들어진 Visual Basic 프로그램을 유지 관리합니다. 프로그램을 사용하는 다른 모든 데스크톱은 현재 x32 비트 OS입니다. 최근에는 x64 비트 시스템 데스크탑이 제공되었습니다. 이 데스크탑에서 컴파일 된이 프로그램 버전을 사용하기 위해 내 보내지 않았습니다.HRESULT에서 예외 : 0x8007000B 잘못된 형식 IESHIMS.DLL
시도가 잘못된 형식의 프로그램을로드하려고했습니다 :
이 프로그램에서 프로젝트를 실행하려고
, 나는 다음과 같은 예외를 받았다. (HRESULT에서 예외 : 0x8007000B) 일부 검색 후
, 나는이 오류가 일치하지 않는 CPU 유형에 의해 발생되는 것을 발견했다. 이 오류가있는 유일한 사람이고이 프로그램을 실행하는 x64 비트 CPU 만 있기 때문에 이것이 가장 좋은 설명이라고 생각했습니다. (일부 세부 사항은 "An attempt was made to load a program with an incorrect format" even when the platforms are the same)
Visual Basic에서 프로젝트의 컴파일 설정을 확인했습니다. 대상 CPU가 "AnyCPU"로 설정됩니다. 프로젝트에 일치하는 이름의 DLL 파일이 포함되어 있습니다. (DLL 파일은 프로그램 설치 중에 로컬로 다운로드됩니다.) DLL 및 EXE 파일을 트리 노드 형식으로 볼 수있는 Dependency Walker 응용 프로그램을 다운로드하여 파일 위치, 타임 스탬프 및 CPU 유형을 보여줍니다. 이 트리 뷰 내의 DLL은 x86 CPU 유형으로 컴파일 된 것으로 나타났습니다.
C : 나는 파일 위치 확장 \ 프로그램 파일 (86) \ Internet Explorer를 \ IESHIMS.DLL을
편집 :
DLL이 ieshims.dll의 LabVIEW 2008 년에 지어진 함유Labview가 64 비트 호환 (2009 년 출시)되기 전이었습니다. 현재이 DLL의 업데이트 된 버전을 사용할 수 있지만 64 비트 호환이 가능한지, 아니면 어떻게 사용할 수 있는지는 여전히 알 수 없습니다. 필요한 경우 DLL을 다시 빌드 할 수있는 액세스 할 수 있습니다.
단순히 DLL을 x86 빌드로 사용하는 응용 프로그램을 종료해도 문제가 발생합니까? 사용할 DLL의 64 비트 버전을 만들어야합니까?
ieshims.dll이 아닙니다. 대상 CPU 설정을 x86으로 변경하십시오. –
DLL은 Labview 2008에서 32 비트로 빌드되었습니다. 그에 따라 내 질문을 업데이트했습니다. – 5unnyr4y3
@HansPassant 대상 CPU 변경. 답을 제출하면 해결책으로 받아 들일 것입니다. – 5unnyr4y3