64 비트 시스템의 32 비트 관리되지 않는 DLL에서 함수를 호출하고 있습니다. 내가 얻는 것은 :
BadImageFormatException : 형식이 잘못된 프로그램을로드하려고했습니다. (HRESULT 예외 : 0x8007000B)
처음에는 프로젝트를 Any CPU 플랫폼으로 설정했기 때문에 둘 다 x86으로 변경했지만이 오류는 여전히 발생합니다. 이것이 내가 아는 유일한 해결책입니다.
DLL은 다른 프로그램 (소스가없는)과 함께 사용할 수 있기 때문에 손상되지 않았습니다. 나는 그것이 의존성을 찾지 못하고 있다고 생각했지만 확인하고 모두 거기에 있습니다. 게다가, DllNotFoundException
그 경우에 던지지 않습니까?
다른 무엇을 할 수 있습니까? 그리고 “64 비트 관리되지 않는 DLL을 대신 사용하십시오”라고 말하기 전에, 하나도없는 것을 지적하겠습니다. 😉
답변
IIS 7 (및 / 또는 64 비트 OS 시스템)에서 32 비트 응용 프로그램을 실행하려고하면 동일한 오류가 발생합니다. 따라서 IIS 7에서 응용 프로그램의 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 “고급 설정”으로 이동하여 “32 비트 응용 프로그램 사용”을 “TRUE”로 변경하십시오.
웹 사이트를 다시 시작하면 작동합니다.
답변
어떻게 든 구성 관리자 의 빌드 확인란이 실행 파일에 대해 선택되지 않았으므로 여전히 이전 Any CPU 빌드로 실행 중이었습니다. 내가 고친 후에 Visual Studio는 어셈블리를 디버깅 할 수 없지만 다시 시작하여 수정되었다고 불평했습니다.
답변
에서 비주얼 스튜디오 , 오른쪽 클릭 프로젝트 -> 왼쪽 창에서 클릭 빌드 탭을,
아래 플랫폼 대상 86 선택 (또는 더 일반적으로 아키텍처는 당신이 연결되어있는 라이브러리와 일치)
나는 이것이 누군가를 돕기를 바랍니다! 🙂
답변
방금이 문제가있었습니다. 여기에있는 모든 제안을 시도했지만 도움이되지 않았습니다.
나는 그것을 고쳐주는 또 다른 것을 발견했다. Visual Studio에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 “속성”을 엽니 다. “컴파일”(또는 “빌드”) 탭을 클릭 한 다음 하단의 “고급 컴파일 옵션”을 클릭하십시오.
“타겟 CPU”드롭 다운을 확인하십시오. 빌드중인 “플랫폼”과 일치해야합니다. 즉, “Any CPU”를 구축하는 경우 “Target CPU”는 “Any CPU”라고 표시해야합니다. 활성화하여 모든 플랫폼을 살펴보고이 설정을 확인하십시오.
답변
녹색 화살표 버튼을 클릭하여 응용 프로그램을 실행할 때이 오류가 발생하지만 여전히 64 비트로 응용 프로그램을 실행하려고합니다. VS 2013, 2015, 2017 및 2019 에서이 작업을 수행 할 수 있습니다
도구> 옵션> 프로젝트 및 솔루션> 웹 프로젝트> 64 비트 버전의 IIS Express 사용으로 이동하십시오.