2010-03-17 9 views
1

Visual C# Express 사용 64 비트 시스템 (OS 및 컴퓨터) :Visual C# Express : 64 비트에서 빌드하고 32 비트에서 배포 하시겠습니까?

대상 빌드 플랫폼을 32 비트 플랫폼으로 설정하고 응용 프로그램을 빌드 할 수 있습니다. 그것은 64 비트 시스템에서 잘 실행됩니다. 그러나 32 비트 시스템에서 동일한 실행 파일을 실행하면 "처리되지 않은 예외 : System.IO.FileNotFoundException : 지정된 모듈을 찾을 수 없습니다."(HRESULT 예외 : 0x8007007E) "

In 일반이 작동하지 않을 것으로 예상되는 또는 오류가 의미하는대로 종속성 문제가 있습니까?

감사합니다,

+0

32 비트 시스템에 응용 프로그램을 어떻게 설치합니까? 참조 된 dll을 설치했는지 확인 했습니까? – ChrisF

+0

@RM 컴퓨터에서 FusionLog를 실행하고 있습니까? 라이브러리 가져 오기 인 경우 어느 것이 해결되지 않았는지와 그것이 처리 한 종속성 체인을 알려 주어야합니다. 체크 아웃 : http://msdn.microsoft.com/en-us/library/e74a18c4%28VS.71%29.aspx. – GrayWizardx

+0

@Simon Linder가 정답에 가장 가까운 크레딧을 잊지 마세요. 그것은 당신과 그를 도울 것입니다. SO에 오신 것을 환영합니다! – GrayWizardx

답변

1

작동합니다

RM. 하지만 귀하의 앱에 DLL이 누락 된 것으로 보입니다. 대상 컴퓨터에서 앱을 DependencyWalker으로 확인하십시오.

+0

Simon - 시도해 보았습니다. kernel32.dll (오류 0xC0000409)에서 스택 오버플로에 종속 된 종속성 워커가 오버플로되었습니다. 아마도 어딘가에 64 비트 DLL을 의미 할 것입니다. 모두 고마워. – RdM

+0

DependencyWalker에서 DLL이 32 또는 64 비트인지 확인할 수도 있습니다. –

0

32 비트가 아닌 라이브러리가있는 것 같습니다. 누락 된 라이브러리는 이미 다른 포스터로 덮여 있으므로 64 비트 라이브러리 인 라이브러리가 있고 형식 로더가 서명과 일치하는지 검사 할 때 서명이 잘못되어로드되지 않게됩니다.

제 3 자 라이브러리를 가져 오지 않고 같은 문제를 나타내는 샘플 프로젝트 (hello world)를 게시 할 수 있다면 더 이상 문제를 해결할 수 있습니다.

빌드 프로젝트에서 빌드되는 모든 라이브러리가 32 비트인지 확인하고 모두 대상 시스템으로 이동했는지 확인하십시오. 필자는 대상 디렉토리를 지우고 덮어 쓰기보다는 파일을 넣는 것을 선호합니다.

+0

나는 그것이 이것이라고 생각한다. Simon의 게시물에서 dependency walker의 출력을 참조하십시오. – RdM

관련 문제