2009-03-04 176 views
3

微軟的Visual Studio「無法啓動程序」(調試版本)

無法啓動程序 'theprogram.exe'。

此應用程序未能啓動 ,因爲應用程序配置 不正確。查看清單文件 以瞭解可能的錯誤。重新安裝 應用程序可能會解決此問題。有關 的更多詳細信息,請參閱 應用程序事件日誌。

OK

有問題的程序是一個C++項目,沒有MFC,沒有AFX,使用的庫有: opengl32.lib glu32.lib SDL.lib sdlmain.lib加上預建libboost_signals-vc80-mt-gd-1_37.lib從BoostPro計算。

程序在Release版本中正常啓動,但在Debug上我得到了上述錯誤信息,再加上一個連接到調試器的殭屍進程,我無法殺死。

的調試版本的清單文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

和發佈版本:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

的Dependency Walker:

Error: The Side-by-Side configuration information for "c:\prog\opengl guis\gg-0.7.0\debug\TUTORIAL.EXE" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001). 
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. 
Warning: At least one delay-load dependency module was not found. 
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. 

DLL文件:

DEVIL.DLL 
ILU.DLL 
MSVCP80D.DLL 
MSVCR80D.DLL 
SDL.DLL 
DWMAPI.DLL 
ADVAPI32.DLL 
DCIMAN32.DLL 
DDRAW.DLL 
GDI32.DLL 
GLU32.DLL 
KERNEL32.DLL 
MSVCRT.DLL 
NTDLL.DLL 
OPENGL32.DLL 
RPCRT4.DLL 
SECUR32.DLL 
USER32.DLL 
ACTIVEDS.DLL 
ADSLDPC.DLL 
ADVPACK.DLL 
APPHELP.DLL 
ATL.DLL 
AUTHZ.DLL 
BROWSEUI.DLL 
CABINET.DLL 
CDFVIEW.DLL 
CERTCLI.DLL 
CFGMGR32.DLL 
CLBCATQ.DLL 
CLUSAPI.DLL 
COMCTL32.DLL 
COMDLG32.DLL 
COMRES.DLL 
CREDUI.DLL 
CRYPT32.DLL 
CRYPTUI.DLL 
CSCDLL.DLL 
DBGHELP.DLL 
DEVMGR.DLL 
DHCPCSVC.DLL 
DNSAPI.DLL 
DUSER.DLL 
EFSADU.DLL 
ESENT.DLL 
GDIPLUS.DLL 
HLINK.DLL 
HNETCFG.DLL 
IEFRAME.DLL 
IERTUTIL.DLL 
IEUI.DLL 
IMAGEHLP.DLL 
IMGUTIL.DLL 
IMM32.DLL 
INETCOMM.DLL 
IPHLPAPI.DLL 
LINKINFO.DLL 
LZ32.DLL 
MFC42U.DLL 
MLANG.DLL 
MOBSYNC.DLL 
MPR.DLL 
MPRAPI.DLL 
MPRUI.DLL 
MSASN1.DLL 
MSGINA.DLL 
MSHTML.DLL 
MSI.DLL 
MSIMG32.DLL 
MSLS31.DLL 
MSOERT2.DLL 
MSRATING.DLL 
MSSIGN32.DLL 
MSVCP60.DLL 
MSWSOCK.DLL 
NETAPI32.DLL 
NETCFGX.DLL 
NETMAN.DLL 
NETPLWIZ.DLL 
NETRAP.DLL 
NETSHELL.DLL 
NETUI0.DLL 
NETUI1.DLL 
NETUI2.DLL 
NORMALIZ.DLL 
NTDSAPI.DLL 
NTLANMAN.DLL 
ODBC32.DLL 
OLE32.DLL 
OLEACC.DLL 
OLEAUT32.DLL 
OLEDLG.DLL 
POWRPROF.DLL 
PRINTUI.DLL 
PSAPI.DLL 
QUERY.DLL 
RASAPI32.DLL 
RASDLG.DLL 
RASMAN.DLL 
REGAPI.DLL 
RTUTILS.DLL 
SAMLIB.DLL 
SCECLI.DLL 
SETUPAPI.DLL 
SHDOCVW.DLL 
SHELL32.DLL 
SHLWAPI.DLL 
SHSVCS.DLL 
TAPI32.DLL 
URLMON.DLL 
USERENV.DLL 
USP10.DLL 
UTILDLL.DLL 
UXTHEME.DLL 
VERSION.DLL 
W32TOPL.DLL 
WINHTTP.DLL 
WININET.DLL 
WINIPSEC.DLL 
WINMM.DLL 
WINSCARD.DLL 
WINSPOOL.DRV 
WINSTA.DLL 
WINTRUST.DLL 
WLDAP32.DLL 
WMI.DLL 
WS2_32.DLL 
WS2HELP.DLL 
WSOCK32.DLL 
WTSAPI32.DLL 
WZCDLG.DLL 
WZCSAPI.DLL 
WZCSVC.DLL 
MSVCR80.DLL 
TUTORIAL.EXE 

連接電話:

/OUT:"C:\prog\OpenGL GUIS\GG-0.7.0\Debug\tutorial.exe" /INCREMENTAL /NOLOGO /LIBPATH:"C:\prog\SDL-1.2.13\lib" /LIBPATH:"C:\prog\contrib\lib_win32" /LIBPATH:"C:\prog\boost\boost_1_37\lib" /MANIFEST /MANIFESTFILE:"Debug\tutorial.exe.intermediate.manifest" /NODEFAULTLIB:"LIBC.LIB" /DEBUG /PDB:"c:\prog\OpenGL GUIS\GG-0.7.0\Debug\tutorial.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 /ERRORREPORT:PROMPT opengl32.lib glu32.lib SDL.lib sdlmain.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ".\debug\gg.lib" 

回答

3

貌似調試版本是與反對兩種調試和運行時釋放這將是一個非常糟糕的事情 - 你還沒有列入無論是在庫列表中你要鏈接反對 - 可能是值得一試,雖然

編輯: 也可能是值得檢查任何#pragma comment (lib...)語句可強制鏈接器包括一個額外的庫,導致潛在的衝突(也documentation on MSDN見)

+0

我剛剛檢查瞭解決方案的項目,儘管其中一個是Multithreaded DLL而不是Multithreaded Debug DLL,但我解決了這個問題,但錯誤依然存在。 – heeen 2009-03-04 22:25:25

+0

你是否還檢查過對鏈接器的調用,以驗證庫是否如預期的那樣? – 2009-03-05 09:07:48

+0

添加鏈接器命令行的問題。 – heeen 2009-03-05 13:56:37

0

嘗試一下在應用程序日誌如錯誤消息所示。我也會嘗試使用像Dependency walker這樣的工具來查找可能丟失/錯誤的DLL問題。

+0

增加了依賴walker輸出的問題。 – heeen 2009-03-05 13:55:01

0

這一直髮生在我身上!這裏是一個小把戲,我發現要解決這個問題:

  1. 轉到「生成>清理解決方案」
  2. 在「解決方案資源管理器右鍵單擊您的項目,進入屬性
  3. 確保配置在左上角是'調試'
  4. 轉到'連接器>系統>子系統'並將其更改爲'未設置'。 (如果已經設置爲「未設置」,請將其更改爲「控制檯」。)
  5. 重建您的程序,如果編譯失敗,那就好了。
  6. 返回到'Linker> System> SubSystem'並將其更改爲之前的版本,然後重新編譯。

現在,至於爲什麼這個工程,我不知道。

1

我曾與Visual Studio 2005的C++快遞一個非常類似的問題。安裝平臺SDK,將MSVCR80D DLL放在正確的位置,但VS似乎沒有找到它。

爲VS Express安裝SP1,並重新啓動,爲我解決了這個問題。

得到它here

1

這聽起來類似於此Boost.Build thread討論了這個問題。可能的解決方案包括確保在安裝Visual Studio時選擇安裝所有類型的運行時,並使用sxstrace.exe工具提供更詳細的診斷。但是,在這種情況下,只有從頭開始重新安裝Visual Studio之後,才能正常工作。

5

如果您右鍵點擊解決方案並轉到屬性,您需要選擇單個啓動項目並選擇您的主機項目。這對我有效。

0

運行在Debug配置中編譯的應用程序時出現同樣的問題。我正在連接一個外部庫,該庫已經與發佈版本的運行庫鏈接,因此我最終在同一個進程中同時發佈了Release和Debug運行時。由於我沒有這個外部庫的Debug版本,所以我不得不堅持Release版本,儘管如此,仍然很麻煩但很難調試。

0

遵循以下步驟:

  1. 保存在新文件夾的項目。
  2. File;將source.cpp移動到項目中。
  3. 構建。
  4. 運行。
相關問題