VS2005 Professional SP1にて非MFCのC++プログラムを作成しています。
ガイド付き最適化を用いてプログラムをビルドしたいのですが、まず「インストルメン
ト」でビルドして、
次に「インストルメントまたは最適化されたアプリケーションの実行」でプログラムを実
行するまでは良いのですが、
その後で「最適化」を実行すると、
fatal error C1307: プロファイル データが集められてからプログラムが編集されました。
1>LINK : fatal error LNK1257: コードの生成に失敗しました。
というエラーが出てしまい、ビルドできません。
もちろんこの間にソースコードの変更などは一切行っていません。
メニューからではなく、プロジェクトのプロパティでリンカオプションを直接指定しても
同様のエラーが出ます。
また、念のために使用している各ライブラリ/オブジェクトファイルのタイムスタンプも
確認してみましたが、問題ありませんでした。
pgdファイルからpgomgr /summaryで統計情報を取り出すことはできるので、pgcのマージ
までは正常に行えていると思います。
なぜこのようなエラーが出るのでしょうか?
中間ファイルのデータが消えずに残っているからでは?
まず、リビルドをしてみたらどうでしょうか。
その後、
「Release」や「Debug」の中でDLL等必要なファイル以外すべて消して
もう一度ビルドしてみたらどうですか?
OSは何ですか?
「VS2005」をインストールしたOSも知りたいですね。
お返事ありがとうございます。
>まず、リビルドをしてみたらどうでしょうか。
>その後、
>「Release」や「Debug」の中でDLL等必要なファイル以外すべて消して
>もう一度ビルドしてみたらどうですか?
これは通常のビルドでしょうか? インストルメントのビルドでしょうか?
中間ファイル等を全て消してからインストルメントでビルドしても、
やはり最適化ビルド時にリンクエラーが出てしまいます。
最適化ビルドの前に中間ファイルを消してみましたが、
objが無いと言われてリンカに怒られました。
(最適化時にもインストルメントでビルドしたobjが必要なのですね...)
なお、最適化ではなく更新でビルドするとリンクはできるのですが、
リンク時の出力が以下のようになります。
3431 of 3431 (100.00%) profiled functions will be compiled for speed
3431 of 3431 functions (100.0%) were optimized using profile data
12199871100 of 12199871100 instructions (100.0%) were optimized using profile data
全ての関数が速度優先でコンパイルされているのですが、
これは正しく最適化されていないということですよね?
OSはVista Home Premium(SP無し)です。