おやおや、これは奇妙すぎて、何を言えばいいのかわからない。短いバージョンは、ユーザーが要求したときにアプリケーションから生成するシミュレーター アプリを持っていることです。コマンドラインまたはスタートメニューからシミュレーターを正常に実行できますが、最近動作を停止しました。これは、VS2010 または Windows 7 に移行したことが原因である可能性があります。または、ソース管理の差分を確認していて気付かなかったことが原因である可能性があります。
同じ方法で生成しようとする 2 つ目のシミュレーターがあり、正常に動作します。
デフォルトでは、この目的のために CreateProcess の周りに Qt3 の QProcess ラッパーを使用していますが、システム、独自の CreateProcess、および ShellExecute を使用しても同じ動作が得られます。
ただし、cmd.exe "/c application params" の ShellExecute は、さらに詳しい情報を提供してくれます。ダイアログが表示されます
「コンピューターに MSVCR80.dll が見つからないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。」
親アプリケーションと 2 番目のシミュレータの両方が MSVCR80.dll を使用しているため、不便です。
MSVC*80.dll を g:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 から実行可能ファイルと同じディレクトリにコピーすると、エラー メッセージが次のように変わります。
「ランタイム エラー!
プログラム: g:\path\to\app.exe
R6034
アプリケーションが C ランタイム ライブラリを正しくロードしようとしました。
詳細については、アプリケーションのサポート チームにお問い合わせください。
に続く
アプリケーションを正しく起動できませんでした (0xc0000142)。[OK] をクリックして、アプリケーションを閉じます。
また、これらの dll を配置して、コマンド ラインからアプリケーションを正常に実行できます。
アップデート:
おそらく環境に関連していると思われたので、ShellExecute メカニズムを変更して cmd /c set && app params を実行しました。同じパラメーターで cmd.exe をセットアップすると、アプリが同様にクラッシュするようになりました。理由がわかったら更新します:)
プロセスの PATH 変数を変更して悪影響を及ぼしているのは、MATLAB のコンポーネント ランタイム ツールです。dllでいっぱいの独自のディレクトリを前に追加し、大混乱を引き起こしています。