4

おやおや、これは奇妙すぎて、何を言えばいいのかわからない。短いバージョンは、ユーザーが要求したときにアプリケーションから生成するシミュレーター アプリを持っていることです。コマンドラインまたはスタートメニューからシミュレーターを正常に実行できますが、最近動作を停止しました。これは、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でいっぱいの独自のディレクトリを前に追加し、大混乱を引き起こしています。

4

3 に答える 3

1

私が使用していた愚かなツールは、PATH で setenv を実行し、いくつかの dll を動的にロードするために必要なディレクトリを先頭に追加しましたが、後でアプリケーションを台無しにしました。ここの最後の例に示すように、GetEnvironmentStrings を使用して、PATH env var の最初のエントリを消去し、新しい (元の) 環境を QProcess に送信して、CreateProcessA をラップしました。

于 2010-11-04T14:14:29.947 に答える
0

CRTをインストールする必要があります

于 2010-11-03T18:32:26.750 に答える
0

これうまくいくかもしれません-壊れた場合、両方の部分を保持することができます:-)

http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=enから VC++ 再頒布可能パッケージをインストールしてみてください

ものをインストールする前に、システムのバックアップ、復元ポイントの作成などを忘れないでください。

別のアイデア - 失敗したアプリケーション自体を再インストールしてみてください。VC++ 再配布可能ファイルの独自のコピーが付属している場合があり、再インストールすると役立つ場合があります。特に。Windows 7 の互換モード (おそらく Vista または XP 互換モードに戻す) を使用して再インストールを試みると、さらに効果的です。

繰り返しますが、試してみる必要があります。上記のアイデアのいずれかがうまくいくかどうか、または害がないことを確認するかどうかはわかりません. とはいえ、同様の問題に直面した場合は、次の手順を試してください。チッ!

于 2010-11-03T18:38:33.927 に答える