dポイントプレゼントキャンペーン実施中!

2つのプロジェクトを内包するソリューソンがあるとします。
片方はDLLで、「a.dll」とします。
もう片方はEXEで、「b.exe」とします。
EXEは「a.dll」を使用していて、「a.lib」をリンクしています。
(プロジェクトのリンカーの追加の依存ファイルに「a.lib」を記述)
依存関係も設定し、ビルド順はDLL,EXEの順になっています。

それで、DLL側のソースを更新し、ビルドを行いました。
結果、「a.lib」と「a.dll」が更新されました。
しかし、EXE側はビルドされませんでした。(更新不要で省略された)
「a.lib」をリンクしているので「a.lib」が更新されれば、
少なくともEXE側もリンク(ビルド)する必要があるはずです。

このような場合どのように設定すれば良いのでしょうか?

ちなみに、それぞれを1つソリューソンに分け、
DLL側をビルド、EXE側をビルドとした場合は、
EXE側はリンク(ビルド)されました。

また、Visual Studio 2008以前はこのような事はありませんでした。
Visual Studio 2010になって、この辺りの処理が変わったのでしょうか?

A 回答 (1件)

プロジェクトの依存関係を設定されましたか?



>「a.lib」をリンクしているので「a.lib」が更新されれば、
>少なくともEXE側もリンク(ビルド)する必要があるはずです。

exe側のプロジェクトでa.libをリンクするように設定してあっても、それは単に「a.libをリンクする」ということを指示するだけであって、VisualStudioは勝手にexeも更新する必要があるとは考えません。
そのために、exe用のプロジェクトがa.lib用のプロジェクトに依存していることを「プロジェクトの依存関係設定」にて設定してください。

>また、Visual Studio 2008以前はこのような事はありませんでした。
>Visual Studio 2010になって、この辺りの処理が変わったのでしょうか?

そのあたりは2008でも2010でも変わっていないと思いますよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
「プロジェクトの依存関係設定」を見直しました。
EXE側はDLL側に依存していて、ビルドの順番もDLL、EXEの順になっていました。
もしかして、ソリューションとEXEは同じドライブで、DLLが別のドライブに保存されているのが悪いのでしょうか?

お礼日時:2011/07/07 13:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!