6

数か月間、Windows 7 64 ビット マシンでプログラムを実行およびコンパイルしてきましたが、最近、使用する静的ライブラリの VC プロジェクト設定をいくつか変更する必要があり、生成された実行可能ファイルを実行する必要があります。 「Windows XP 互換モード」で。

  • Visual Studio 2010 SP1 を搭載した Windows7 64 ビット マシンでコンパイル
  • 私が生成しているプログラムは、Win32 のデバッグ モードでビルドされています。
  • 静的ライブラリ プロジェクトは、ターゲット マシン /X86 を指定します。
  • デバッガーからプログラムを実行すると、プログラムが起動して実行されますが、Windows アイコンを介して実行する場合は、XP 互換モードが必要です。
    • デバッガーの外部で起動しようとすると、EXE がタスク マネージャーに 1 秒間表示されてから消えます。
  • Microsoft Application Verifier を使用してみましたが、出力で何を探すべきかわかりません。

この問題のトラブルシューティング方法の詳細を見つけることができなかったので、この最近の互換モード要件の原因となっている可能性のあるものを見つける方法があれば、それがどのように修正されたかを知りたい.

リンクする静的ライブラリの大部分のソース/プロジェクト/ソリューションと、生成されたexeファイルがありますが、.lib、.dll、および.hファイルしかない外部依存関係の一部があります。これは、必要に応じて依存関係のプロジェクト設定の (ほとんど) を変更できることを意味しますが、どの設定を探すべきかを知る必要があります。

ありがとう

4

1 に答える 1

1

正直なところ、5 つのプロジェクトであっても、別のプロジェクトを作成してコード ファイルをコピーすることを恐れないでください。問題を半分に削減する必要があります。新しいプロジェクトで動作する場合はプロジェクト ファイルであり、動作しない場合はコードです。プロジェクトを作成することは実際にはそれほど難しいことではありませんが、多くの驚愕の原因であり、人々が避けるものであることは確かです. プロジェクトの場合は、ファイルを比較して、消去プロセスによって何が起こったかを確認できます。本当に心配な場合は、ソリューション全体を別のフォルダーにコピーしてください。常にバックアップを作成します。

問題は、運が良くない限り、有意義な回答を得るのに十分な情報を私たちに届けることがおそらくできないということです。

ですから、私はこの質問を「これが起こったのですが、どうすればよいでしょうか」と受け止めたいと思います。これが以前に機能していた場合、上記の戦略はそれから抜け出すでしょう。この演習は、将来に向けてあなたを武装させ、長期的にはより生産的になります. UAC とマニフェスト ファイル、別名 Vista+ の違いは、ロードと実行の動作を劇的に変更します (リンカー コマンドVista 移行ガイド) を確認する必要がある場合は、上記のプロセスを試してください。

----

その他の一般的な試み:

1) 別のマシン

2) VS の別のインストール

3) ツール チェーンと環境の他のすべてを証明するために何もしない 1 つのウィンドウを持つ単純なプロジェクトは問題ありません。

4) コード パスに沿ってさまざまなメッセージを含むメッセージ ボックスを配置することで、どこに問題があるかがわかります。

5) リリースで pdb をオンにし、デバッガーの外部で実行します。うまくいかない場合は、デバッグを試して、まだうまくいかないかどうかを確認してください。

6) コードが不安定で、以前は機能していたときに運が良かったと仮定します。(これは面白くない)。多くの場合、メモリ レイアウトが異なるため、デバッグでは機能しますが、リリースでは機能しません。プログラムが大きい場合、#if を使用してコードの実行を制限しつつ、全体をロードする独創的な方法を見つけることができます。悪い動作を引き起こすコードを見つけることができます。

7) UAC とエラー報告がオンの場合はオフにし、変更があるかどうかを確認します。

8) Visual Studio で [デバッグなしで実行] メニュー ボタンを見つけて、アイコンを使用して実行する必要がないようにします。それは起こるのを待っている事故であり、もう1つの環境の違いを排除します. デバッグ ボタンを使用して実行するように見えますが、中が空洞で、プレーンな緑色の三角形です。デバッグ メニュー セットの下にあります。私の意見では、多くの人がVSで起動することは常にデバッガーを使用することを意味すると混乱しているため、デフォルトでバーにそれを持たないことは良いことよりも害を及ぼしているということです.

等々....

于 2012-09-06T20:17:37.420 に答える