環境:Win7 64bit, Visual Studio Professional 2012
Releaseでビルドすると出力ウィンドウに「コード生成しています。」という表示が出た段階から進まなくなってしまう現象に困っています.
IDEのメニューから ビルド→キャンセル を選べば
「Microsoft Incremental Linkerは動作を停止しました
この問題の解決策を確認しています...」
というダイアログが出て,しばらく放置するか キャンセルボタンを押せば ビルドの取り消しは可能です.
このプロジェクトはDebugビルドだと普通にexe生成まで終わり,動作も可能です.
クリーン,リビルド,プロジェクトを別に作り直してソースファイルを一式持っていく 等試しましたが同じ状況が起きています.
・どうしてこうなるのか
・どうすれば解決できるのか
等,御存じの方おられましたら,ご教授頂きたくお願い申し上げます.
ビルドが止まってしまう
Re: ビルドが止まってしまう
インクリメンタルリンクをOFFにしてみたらどうでしょうか。
http://msdn.microsoft.com/ja-jp/library/4khtbfyf.aspx
http://msdn.microsoft.com/ja-jp/library/4khtbfyf.aspx
Re: ビルドが止まってしまう
>インクリメンタルリンクをOFFにしてみたらどうでしょうか。
設定を確認したところ
インクリメンタルリンクはOFFな設定になっていました.
…で,その後,一応ビルドできました.
リンカの進行状況を全て表示させてみたところ
と表示されて,ここで止まっているように見えていたのですが
その後 ずっと放置してみたところ, 再び というのが始まり,最終的に と表示され,正常終了しました.
ビルドログを見ると とのことで5分ほどかかっています.
debugならリンクは一瞬で終わるような規模のプログラムなのですが,何でこんなにも時間がかかるのでしょう?
設定を確認したところ
インクリメンタルリンクはOFFな設定になっていました.
…で,その後,一応ビルドできました.
リンカの進行状況を全て表示させてみたところ
1> パス 1 を開始します。
1> /DEFAULTLIB:msvcprt オプションで処理を行いました。
1> /DEFAULTLIB:MSVCRT オプションで処理を行いました。
1> /DEFAULTLIB:OLDNAMES オプションで処理を行いました。
1> /DEFAULTLIB:glu32.lib オプションで処理を行いました。
1> /DEFAULTLIB:opengl32.lib オプションで処理を行いました。
1>
1> ライブラリを検索しています。
…(すごいたくさんの libを検索中→見つかりました という表示)
1> ライブラリの検索が終了しました。
1>
1> パス 1 が終了しました。
1>
1> コード生成しています。
その後 ずっと放置してみたところ, 再び というのが始まり,最終的に と表示され,正常終了しました.
ビルドログを見ると とのことで5分ほどかかっています.
debugならリンクは一瞬で終わるような規模のプログラムなのですが,何でこんなにも時間がかかるのでしょう?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 12年前
- 住所: 東海地方
- 連絡を取る:
Re: ビルドが止まってしまう
リリースビルドの検索パスが多いんでしょうか。
そもそもパス1の段階で多すぎる気もしないでもないです。
[補足]検索パスを減らすか、パスの並びを変えれませんか?
そもそもパス1の段階で多すぎる気もしないでもないです。
[補足]検索パスを減らすか、パスの並びを変えれませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ビルドが止まってしまう
すみません.私,かなり無知であり 「パス1」とか「パス2」とかって何?状態です…
>[補足]検索パスを減らすか、パスの並びを変えれませんか?
これは 何を見ればよいのでしょう?
/LIBPATH のことなのでしょうか?(これは一個しか指定してないです)
>[補足]検索パスを減らすか、パスの並びを変えれませんか?
これは 何を見ればよいのでしょう?
/LIBPATH のことなのでしょうか?(これは一個しか指定してないです)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 12年前
- 住所: 東海地方
- 連絡を取る:
Re: ビルドが止まってしまう
あっ用語がごちゃごちゃですね。すいません。
パス1・2はコンパイラの段階(ステージ)のpassです。
検索パスはpathです。
と言うことで
【補足】
この場合インクルードpathの問題だと思われます。
パス1・2はコンパイラの段階(ステージ)のpassです。
検索パスはpathです。
と言うことで
と言う話をしています。リリースビルドの検索pathが多いんでしょうか。
そもそもpass1の段階で多すぎる気もしないでもないです。
[補足]検索pathを減らすか、検索pathの並びを変えれませんか?
【補足】
この場合インクルードpathの問題だと思われます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ビルドが止まってしまう
情報ありがとうございます.
ご報告申し上げます.
>この場合インクルードpathの問題だと思われます。
使用しているライブラリのヘッダがある場所と,
プロジェクト直下を含む4カ所に散らばっているソース群のパスの
全5カ所のパスを以下のようにインクルードパスに指定していました.(指定順)
./ ← 直下
./A ← サブフォルダ1号
./B ← サブフォルダ2号
../C ← ちょっと別のところにあるソース群
C:\.../include ← ライブラリ用
これを,とりあえず ./A, ./B, ../C にあるソースファイル群について,全てプロジェクト直下にコピーしてきて
インクルードパスを
C:\.../include
だけにした状態でビルドしたところ,ビルド時間は 4分4秒 となり,約1分も短くなりました.
ご報告申し上げます.
>この場合インクルードpathの問題だと思われます。
使用しているライブラリのヘッダがある場所と,
プロジェクト直下を含む4カ所に散らばっているソース群のパスの
全5カ所のパスを以下のようにインクルードパスに指定していました.(指定順)
./ ← 直下
./A ← サブフォルダ1号
./B ← サブフォルダ2号
../C ← ちょっと別のところにあるソース群
C:\.../include ← ライブラリ用
これを,とりあえず ./A, ./B, ../C にあるソースファイル群について,全てプロジェクト直下にコピーしてきて
インクルードパスを
C:\.../include
だけにした状態でビルドしたところ,ビルド時間は 4分4秒 となり,約1分も短くなりました.
Re: ビルドが止まってしまう
調べていたところ,ほとんど同じソースを利用しているプロジェクトが存在していたので
Releaseビルド時間を調べたところ15秒ほどでした.
そこで,そのプロジェクトと今回のプロジェクトとの間で設定を見比べたところ,
今回問題となっている側では
「SDLチェック」というのが有効になっている点が異なっていました.
試しにそれを無効にしてリビルドしてみたところ,
前記ご指摘いただいたインクルードパスを減らすこと込みで
ビルド時間が約19.4秒に改善しました.(リンクの部分は体感では10秒くらいでしょうか)
なんだかよくわからないのですが,とりあえずこれが主たる原因だったように見えます.
本件の主題たるビルド時間については改善したように思えるので[解決]チェックをつけておきます.
[追記]
ソース群の配置を元の状態に戻して,SDLチェックを無効化した状態では ビルド時間は20.1秒となりました.
(SDLチェックが無ければインクルードパスの話は影響はそんなに無い?)
Releaseビルド時間を調べたところ15秒ほどでした.
そこで,そのプロジェクトと今回のプロジェクトとの間で設定を見比べたところ,
今回問題となっている側では
「SDLチェック」というのが有効になっている点が異なっていました.
試しにそれを無効にしてリビルドしてみたところ,
前記ご指摘いただいたインクルードパスを減らすこと込みで
ビルド時間が約19.4秒に改善しました.(リンクの部分は体感では10秒くらいでしょうか)
なんだかよくわからないのですが,とりあえずこれが主たる原因だったように見えます.
本件の主題たるビルド時間については改善したように思えるので[解決]チェックをつけておきます.
オフトピック
「SDLチェック」なるものについては,少し検索してみた感じだと,まぁ取り払っても問題なさそうかな,と.
(C4996がいつの間にか警告じゃなくてエラーになってたのもこいつの仕業らしい)
(C4996がいつの間にか警告じゃなくてエラーになってたのもこいつの仕業らしい)
ソース群の配置を元の状態に戻して,SDLチェックを無効化した状態では ビルド時間は20.1秒となりました.
(SDLチェックが無ければインクルードパスの話は影響はそんなに無い?)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 12年前
- 住所: 東海地方
- 連絡を取る:
Re: ビルドが止まってしまう
「/sdl (追加のセキュリティ チェックの有効化)」
http://msdn.microsoft.com/ja-jp/library/jj161081.aspx
これだけでそんなに増えると思いませんでした。2012以降に付いた機能の様ですね。
なにをやっているのだろう・・・。しかし、ややこしい名前である。
http://msdn.microsoft.com/ja-jp/library/jj161081.aspx
これだけでそんなに増えると思いませんでした。2012以降に付いた機能の様ですね。
なにをやっているのだろう・・・。しかし、ややこしい名前である。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。