«Невозможно запустить программу» (отладочная сборка) - PullRequest
3 голосов
/ 05 марта 2009

Microsoft Visual Studio

Невозможно запустить программу 'theprogram.exe'.

Это приложение не удалось запустить потому что конфигурация приложения это неверно. Просмотрите файл манифеста на возможные ошибки. Переустановка Приложение может решить эту проблему. За более подробную информацию, пожалуйста, смотрите журнал событий приложения.

ОК

Рассматриваемая программа является проектом C ++, без MFC, без AFX, используются следующие библиотеки: opengl32.lib glu32.lib SDL.lib sdlmain.lib плюс предварительно построенный libboost_signals-vc80-mt-gd-1_37.lib от BoostPro.

Программа прекрасно запускается в сборках Release, но при отладке я получаю вышеупомянутое сообщение об ошибке, а также процесс зомби, прикрепленный к отладчику, который я не могу убить.

Файлы манифеста для отладочной сборки:

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

Ответы [ 10 ]

5 голосов
/ 09 декабря 2010

Если вы щелкнете правой кнопкой мыши по решению и перейдете в Свойства, вам нужно выбрать Single Startup Project и выбрать ваш хостинг-проект. Это сработало для меня.

3 голосов
/ 05 марта 2009

Похоже, что отладочная сборка связана с обеими средами отладки и выпуска, что было бы очень плохо - вы не включили ни один из них в список библиотек, с которыми вы ссылаетесь - хотя стоит проверить

Edit: Может также стоить проверить любые операторы #pragma comment (lib...), которые могут заставить компоновщик включать дополнительную библиотеку, вызывая потенциальные конфликты (см. Также документацию в MSDN )

2 голосов
/ 05 марта 2009

У вас также есть два различных набора версий, перечисленных в манифесте для отладочной сборки!

Это может быть немного по-другому, так как вы работаете на VS2005, но вы можете найти что-то полезное в моем вопросе: Приложение не работает с библиотеками VS 2008 SP1, предыдущая версия работает с версиями RTM

1 голос
/ 29 июня 2009

Это похоже на проблему, обсуждаемую в этой теме Boost.Build . Возможные решения включают в себя установку всех версий среды выполнения при установке Visual Studio и использование инструмента sxstrace.exe для более подробной диагностики. Однако в этих случаях ничего не работало, пока Visual Studio не был переустановлен с нуля.

1 голос
/ 29 июня 2009

У меня была очень похожая проблема с Visual Studio 2005 C ++ express. Установив SDK платформы, поместите dll MSVCR80D в нужное место, но VS, похоже, не нашел его.

Установка SP1 для VS Express и перезапуск решили проблему для меня.

Получите здесь

0 голосов
/ 05 сентября 2015

Выполните следующие действия:

  1. Сохранить проект в новой папке.
  2. Файл; Переместите source.cpp в проект.
  3. Сложение.
  4. Run.
0 голосов
/ 06 ноября 2011

Это похоже на проблему, описанную в этой статье: http://tmoniuszko.blogspot.com/2011/11/installing-service-pack-1-for-visual.html

0 голосов
/ 28 октября 2011

Была та же проблема при запуске приложения, которое было скомпилировано в конфигурации отладки. Я связывался с внешней библиотекой, которая была связана с версией Release библиотеки времени выполнения, поэтому я закончил с обеими версиями Release и Debug в одном процессе. Поскольку у меня не было отладочной версии этой внешней библиотеки, мне пришлось придерживаться версии Release, громоздкой для отладки, но, тем не менее, работоспособной.

0 голосов
/ 05 марта 2009

Это происходит со мной все время! Вот маленькая хитрость, которую я обнаружил, чтобы исправить это:

  1. Перейти к «Построить> Чистый раствор»
  2. В «Обозревателе решений» щелкните правой кнопкой мыши свой проект и перейдите в свойства
  3. Убедитесь, что в верхнем левом углу указана конфигурация «Отладка»
  4. Перейдите к «Linker> System> SubSystem» и измените его на «Not Set». (Если он уже установлен на «Не установлено», измените его на «Консоль».)
  5. Перестройте вашу программу, если она не скомпилируется, это нормально.
  6. Вернитесь к 'Linker> System> SubSystem', измените его на прежнее и перекомпилируйте.

Теперь о том, почему это работает, я не уверен.

0 голосов
/ 05 марта 2009

Попробуйте посмотреть в журнале приложений, как подсказывают сообщения об ошибках. Я также попытался бы использовать инструмент, такой как Dependency walker , чтобы найти возможную отсутствующую / неправильную проблему с DLL.

...