2012-01-24 38 views
5

我正在使用64位插件的64位操作系統windows 7終極機器VS2008。VS2008中的64位調試版本的並行配置錯誤

我已經成功構建了我的項目,包括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:\ Program Files文件(x86)的\微軟的Visual Studio 9.0 \ VC \ REDIST \ Debug_NonRedist \ AMD64 \ Microsoft.VC90.DebugCRT 我加 Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d.sll 在我的解決方案的bin \ debug文件夾中。

最後的Dependency Walker沒有必須任何黃色標記(文件丟失)離開了,但它仍然給了這樣的錯誤:

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位的清單說:

<?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> 

儘管64位調試清單有:

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

我不明白的是,爲什麼調試32位版本ru n成功了嗎?

請幫助我,因爲我已經檢查了很多問題,但還沒有找到任何可行的解決方案。

+0

不重複,但可能相關?不知道這是否會有所幫助:http://stackoverflow.com/questions/3803825/vc-crt-redist-problem –

+0

你是否試圖在不同的機器上運行構建比你建立它?通常情況下,調試運行時是「不可再發行的」,這意味着你不能在沒有構建合併模塊的情況下在其他機器上運行它,並在你試圖運行代碼的任何機器上安裝它們。 – Benj

+0

@Nic - 我不認爲這個問題會有幫助,那個人只是錯過了正確的發行版運行時。調試運行時很痛苦......通常在VS中建立一個「設置項目」爲你處理合並模塊,這樣你就可以將它們與你的二進制文件一起安裝在調試版本中。 – Benj

回答

5

Thankyou迴應我的問題。我終於解決了它,這裏是解決方案: -

我的是一個基於Qt的VC++解決方案,該應用程序依賴於一些第三方DLL &庫。 我的任務是爲我的應用程序提供64位支持,我已經在64位操作系統中構建了Qt和第三方DLL庫。

當我嘗試在調試64位配置中運行我的應用程序時,我得到了CRT錯誤。錯誤堅持即使是在我複製以下的CRT到我的應用程序的bin文件夾

redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT

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

Microsoft.VC90.DebugOpenMP

  1. vcomp90d.dll

我能夠成功啓動我的應用程序在調試64位模式下,當我在相應的bin文件夾中,其中Qt和第三方庫出席粘貼上面的CRT顯示器。

+0

提示:你應該能夠接受你自己的答案。 –

1

取決於並排依賴關係並不是很好,因爲它通常會使它看起來像在實際需要稍微不同的版本時找到dll。

您可以使用sxstrace.exe得到缺少什麼更好的主意:

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

事件日誌通常顯示並排側錯誤,但可悲的是,這些不給你其他許多信息比你有問題。

2

在爲我的Delphi控制檯應用程序(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

相關問題