【问题标题】:"Unable to start program" (Debug build)“无法启动程序”(调试版本)
【发布时间】:2010-10-11 09:19:50
【问题描述】:

微软视觉工作室

无法启动程序“theprogram.exe”。

此应用程序启动失败 因为应用程序配置 是不正确的。查看清单文件 对于可能的错误。重新安装 应用程序可能会解决此问题。为了 更多详情,请参阅 应用程序事件日志。

好的

有问题的程序是一个 C++ 项目,没有 MFC,没有 AFX,使用的库是: opengl32.lib glu32.lib SDL.lib sdlmain.lib 加上来自 BoostPro 计算的预建 libboost_signals-vc80-mt-gd-1_37.lib

程序在发布版本中启动良好,但在调试时我收到上述错误消息,以及附加到调试器的僵尸进程,我无法杀死。

调试构建的清单文件:

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

依赖步行者:

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"

【问题讨论】:

    标签: c++ visual-c++ visual-studio-2005 boost


    【解决方案1】:

    如果您右键单击解决方案并转到“属性”,则需要选择“单一启动项目”并选择您的托管项目。这对我有用。

    【讨论】:

      【解决方案2】:

      看起来调试版本链接到调试和发布运行时,这将是一件非常糟糕的事情——你没有将任何一个包含在你链接的库列表中——尽管可能值得检查

      编辑: 可能还值得检查是否有任何 #pragma comment (lib...) 语句可以强制链接器包含额外的库,从而导致潜在的冲突(另请参阅 documentation on MSDN

      【讨论】:

      • 我刚刚检查了解决方案的项目,虽然其中一个是多线程 DLL 而不是多线程调试 DLL,但我修复了这个问题,但错误仍然存​​在。
      • 您是否还检查了对链接器的调用,以验证库是否符合预期?
      【解决方案3】:

      您还在调试版本的清单中列出了两个不同的版本集!

      由于您使用的是 VS2005,可能会有所不同,但您可能会在我的问题中找到一些有用的信息:App does not run with VS 2008 SP1 DLLs, previous version works with RTM versions

      【讨论】:

        【解决方案4】:

        我在使用 Visual Studio 2005 C++ express 时遇到了非常相似的问题。安装平台SDK,把MSVCR80D dll放到正确的地方,但是VS好像没找到。

        为 VS Express 安装 SP1,然后重新启动,解决了我的问题。

        获取here

        【讨论】:

          【解决方案5】:

          这听起来类似于Boost.Build thread 中讨论的问题。可能的解决方案包括确保在安装 Visual Studio 时选择安装所有类型的运行时,并使用 sxstrace.exe 工具提供更详细的诊断。但是,在这种情况下,在从头开始重新安装 Visual Studio 之前没有任何效果。

          【讨论】:

            【解决方案6】:

            尝试按照错误消息的提示查看应用程序日志。我也会尝试使用Dependency walker 之类的工具来查找可能丢失/错误的 DLL 问题。

            【讨论】:

            • 在问题中添加了 Dependency walker 输出。
            • 我认为您应该能够看到导致问题的 DLL。从您列出的输出中我不清楚。
            【解决方案7】:

            这一直发生在我身上!这是我发现的一个小技巧来解决它:

            1. 转到“构建 > 清洁解决方案”
            2. 在“解决方案资源管理器”中右键单击您的项目,然后转到属性
            3. 确保左上角的配置是“调试”
            4. 转到“链接器 > 系统 > 子系统”并将其更改为“未设置”。 (如果它已设置为“未设置”,请将其更改为“控制台”。)
            5. 重建你的程序,如果编译失败也没关系。
            6. 返回到“链接器 > 系统 > 子系统”并将其更改为之前的状态,然后重新编译。

            现在,我不确定为什么会这样。

            【讨论】:

              【解决方案8】:

              运行在调试配置中编译的应用程序时遇到同样的问题。我正在链接一个外部库,该库已与运行时库的发布版本链接,因此我最终在同一进程中同时获得了发布和调试运行时。由于我没有这个外部库的 Debug 版本,我不得不坚持使用 Release 构建,虽然调试起来很麻烦,但仍然可以使用。

              【讨论】:

                【解决方案9】:

                【讨论】:

                • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
                【解决方案10】:

                按照以下步骤操作:

                1. 将项目保存在新文件夹中。
                2. 文件;将 source.cpp 移到项目中。
                3. 构建。
                4. 运行。

                【讨论】:

                  猜你喜欢
                  • 2019-01-19
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-08-15
                  • 2020-03-06
                  • 1970-01-01
                  • 2019-05-15
                  相关资源
                  最近更新 更多