2012-01-24 84 views
5

64 비트 OS Windows 7 궁극적 인 머신 VS2008 및 64 비트 애드온에서 작업 중입니다.VS2008의 64 비트 디버그 빌드에 대한 side-by-side 구성 오류

나는 성공적으로 32 64 비트, 디버그 및 릴리스 구성 모두에서 내 프로젝트를 빌드했습니다. 64 비트 디버그가 시작되지 않습니다.

Unable to Start program xxx This application has failed to start because application configuration is incorrect. Review the manifest file for possible errors. Reinstalling the application may fix this problem. For more retails see application event log.

종속성 워커를 실행했습니다. redistibutable 경로 C에서 : \ 프로그램 파일 9.0 \ VC \ 재배포 \ Debug_NonRedist는 AMD64의 \의 Microsoft.VC90.DebugCRT \ 내가 Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d 을 추가 마이크로 소프트 비주얼 스튜디오 \ (86) Microsoft 솔루션의 bin \ debug 폴더에있는 Microsoft.VC90.DebugOpenMP vcomp90d.sll .

마지막 워커는 어떤 노란색 마크 (누락 된 파일) 왼쪽이 didnt는 의존성,하지만 여전히이 같은 오류를 준 :

Error: At least one required implicit or forwarded dependency was not found. Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. Error: Modules with different CPU types were found. Error: The Side-by-Side configuration information in "e:\xyz.EXE" contains errors. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail (14001).

32 비트 매니페스트는 말한다 : 64 비트 디버그 반면

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" **processorArchitecture="x86"** publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

매니페스트는 다음과 같습니다.

<dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 

내가 이해하지 못하는 것은 왜 디버그 32 비트 빌드 n 성공적으로?

많은 질문을 이미 확인했지만 실행 가능한 해결책을 찾지 못해서 도와주세요.

+0

중복이 아니 어쩌면 관련이있을 수 있습니까? 이것이 전혀 도움이 될지 확실하지 않은 경우 : http://stackoverflow.com/questions/3803825/vc-crt-redist-problem –

+0

빌드를 실행 한 시스템과 다른 시스템에서 빌드를 실행하려고합니까? 일반적으로 디버그 런타임은 "재배포 불가능"입니다. 즉, 병합 모듈을 작성하지 않고 다른 시스템에서 실행할 수없고 코드를 실행하려고하는 모든 시스템에 디버그 런타임을 설치할 수 없습니다. – Benj

+0

@Nic - 그 질문이 도움이 될 것이라고 생각하지 않습니다. 그 사람은 올바른 릴리스 런타임이 누락되었습니다. 디버그 런타임은 고통 스럽습니다 ... 일반적으로 VS에서 "설치 프로젝트"를 빌드하면 디버그 빌드로 바이너리와 함께 설치할 수 있도록 병합 모듈을 처리합니다. – Benj

답변

5

내 질문에 답변 해 주셔서 감사합니다. 나는 그것을 마침내 해결했고 여기에 해결책이있다. -

광산은 Qt 기반 VC++ 솔루션이었고, 앱은 일부 타사 DLL & libs에 의존했다. 내 임무는 64 비트 OS에서 Qt 및 제 3 자 dll을 & libs로 빌드 한 응용 프로그램에 64 비트 지원을 제공하는 것이 었습니다.

디버그 64 비트 구성에서 내 앱을 runnig 할 때 CRT 오류가 발생했습니다.

  1. Microsoft.VC90.DebugCRT.manifest
  2. msvcm90d.dll
  3. msvcp90d.dll
  4. msvcr90d.dll

: 오류가 난 내 응용 프로그램의 bin 폴더에 다음의 CRT

redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT을 복사 한 후에도 지속: 내가 Qt를하고 제 3의 라이브러리가 존재 대응하는 빈 폴더에 위의 브라운관을 붙여 넣을 때 디버그 64 비트 모드에서 성공적으로 내 응용 프로그램을 실행 할 수 있었다

  1. vcomp90d.dll

.

+0

힌트 : 당신 자신의 대답을 받아 들일 수 있어야합니다. –

1

실제로는 약간 다른 버전이 필요할 때 dll이 발견되는 것처럼 보이기 때문에 종속성이 좋지 않습니다. 당신은 실종 무엇의 더 나은 아이디어를 얻을 sxstrace.exe를 사용할 수 있습니다

는 :

http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx

이벤트 로그는 일반적으로 나란히 오류를 표시하지만, 슬프게도이 다른 당신에게 많은 정보를 제공하지 않습니다 너는 문제가있다.

2

"권한 상승"에 대한 목록을 내 델파이 콘솔 응용 프로그램 (32 비트, Win7 x64에서 실행될 때의 문제)에 추가 한 후 동일한 문제가 발생했습니다. 문제가 매니페스트 파일에 언급 된 종속성에 관련이 :

<dependency> 
<dependentAssembly> 
    <assemblyIdentity 
    type="win32" 
    name="Microsoft.Windows.Common-Controls" 
    version="6.0.0.0" 
    publicKeyToken="6595b64144ccf1df" 
    language="*" 
    processorArchitecture="*"/> 
</dependentAssembly> 
</dependency> 

내가 매니페스트에서 제거 할 때, 사이드 오류에 의한 측면이 사라졌다.

+0

대체 답변 인 MrTheV에 오신 것을 환영합니다. –

+0

어떻게 그것을 매니 페스트에서 제거 했습니까? – user3731622