質問

  

Microsoft Visual Studio

     

プログラム「theprogram.exe」を開始できません。

     

このアプリケーションは起動に失敗しました   アプリケーション構成   間違っている。マニフェストファイルを確認する   エラーの可能性。再インストール   アプリケーションがこの問題を修正する場合があります。にとって   詳細については、   アプリケーションイベントログ。

     

OK

問題のプログラムは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"
役に立ちましたか?

解決

デバッグビルドはデバッグランタイムとリリースランタイムの両方に対してリンクされているように見えますが、これは非常に悪いことです(リンクしているライブラリのリストに含まれていない場合)-確認する価値があるかもしれません

編集: リンカに追加のライブラリを強制的に追加し、潜在的な競合を引き起こす可能性がある #pragma comment(lib ...)ステートメントも確認する価値があるかもしれません( MSDNのドキュメント

他のヒント

ソリューションを右クリックして[プロパティ]に移動する場合、[単一のスタートアッププロジェクト]を選択し、ホスティングプロジェクトを選択する必要があります。これでうまくいきました。

デバッグビルドのマニフェストに 2つの異なるバージョンセットがリストされています!

VS2005を使用しているため、少し異なる場合がありますが、私の質問に何か役立つものが見つかるかもしれません:アプリはVS 2008 SP1 DLLでは実行されません。以前のバージョンはRTMバージョンで動作します

Visual Studio 2005 C ++エクスプレスでも同様の問題がありました。プラットフォームSDKをインストールし、MSVCR80D dllを適切な場所に配置しましたが、VSはそれを見つけられなかったようです。

VS Express用のSP1をインストールして再起動すると、問題は解決しました。

入手こちら

これは、この Boost.Buildで説明されている問題に似ています。スレッド。考えられる解決策には、Visual Studioのインストール時にすべてのフレーバーのランタイムのインストールを選択したことを確認し、sxstrace.exeツールを使用してより詳細な診断を行うことが含まれます。ただし、その場合、Visual Studioを最初から再インストールするまで何も機能しませんでした。

エラーメッセージが示すように、アプリケーションログを確認してください。また、 Dependency walker などのツールを使用して、DLLの欠落/誤りの可能性のある問題を見つけます。

これはいつも私に起こります!これを修正するために私が発見したちょっとしたトリックを次に示します。

  1. 「ビルド&gt;クリーンソリューション」
  2. 「ソリューションエクスプローラー」でプロジェクトを右クリックし、プロパティに移動します
  3. 左上の設定が「デバッグ」であることを確認します
  4. 「リンカー&gt;システム&gt;サブシステム」を選択し、それを「未設定」に変更します。 (既に「未設定」に設定されている場合は、「コンソール」に変更します。)
  5. プログラムを再構築します。コンパイルに失敗した場合は問題ありません。
  6. 「リンカー&gt;」に戻るシステム&gt;サブシステム」を使用して、以前の状態に変更し、再コンパイルします。

今、なぜこれが機能するのかはわかりません。

デバッグ構成でコンパイルされたアプリケーションの実行と同じ問題が発生しました。リリースバージョンのランタイムライブラリにリンクされていた外部ライブラリとリンクしていたため、同じプロセスでリリースとデバッグの両方のランタイムになりました。この外部ライブラリのデバッグバージョンを持っていなかったため、リリースビルドに固執する必要がありました。デバッグは面倒ですが、それでも動作します。

この記事で説明されているのと同じ問題のように見えます: http://tmoniuszko.blogspot.com/2011/11/installing-service-pack-1-for-visual.html

次の手順に従ってください:

  1. プロジェクトを新しいフォルダーに保存します。
  2. ファイル; source.cppをプロジェクトに移動します。
  3. ビルド。
  4. 実行。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top