2012-04-17 34 views
7

リリースモードでVisuas C++ 10でマルチプロジェクトアプリケーションを構築しようとしています。
次のリンクエラーが発生します。
2>すべての出力が最新です。 2> PidAppLib.lib(ThreadWin32.obj):エラーLNK2011:プリコンパイルされたオブジェクトがリンクされていません。 \ SW \ NewPidTools \ PidWriter \リリース\ PidLabler.exe \ infinite_memories_svn \プロジェクト:画像は
2>をCに動作しない場合があり、致命的なエラーLNK1120:1つの未解決の外部
2>
2> FAILEDビルドします。
Visual C++ - どの外部が見付からないかわからない

どのオブジェクトが未解決であるかをどのように知ることができますか?
ThreadWin32.objはインターネットからダウンロードされた外部libです。

+0

デバッグでは... 問題はプリコンパイルされたオブジェクトであると思いますが、それは何か分かりません。 –

+0

「すべて再構築」を試しましたか? (申し訳ありません - それはかなり基本的ですが、わかりませんが) – MiMo

+0

あなたのライブラリ設定を確認し、それらがリリースに適切に設定されていることを確認できますか?私は自分自身がデバッグのためにそれらを設定してコードを稼働させているのを発見し、リリースを変更するのを忘れてしまった。 –

答えて

6


私はこの問題を解決しました。
私は2つのライブラリを持っています.a.libとb.libとproject、cとしましょう。 a.libはb.libを使用します。ライブラリアンの依存関係はa.libに追加しました。b.libを追加しました.cはa.libを使用していますので、 を依存関係に追加しました。
デバッグでは動作しますが、リリースでは、b.libをcの依存関係に追加する必要があります。 奇妙ですが問題を解決しました

+0

このリンクは、問題についてのより良い説明を提供します。[プログラミングビット](http://progbits.blogspot.in/) – MLS

3

リファクタリングしていた大きなプロジェクトでこのエラーが発生しました。リファクタリングプロセス中に、プロジェクト全体を構築することなく、個々のソースファイルをコンパイルして、変更を確認することがあります。プロジェクトの構成によっては、プロジェクトをビルドするときに通常出力される場所とは異なるディレクトリに.objファイルが出力されることがあります。私の場合、手動でコンパイルされたソースファイルの.objファイルは、中間ビルドディレクトリではなくソースコードディレクトリに出力されました。

このような副作用は、プロジェクト全体をビルドするときに、手動でコンパイルされたソースファイルが、他の場所での変更が必要であったとしても再コンパイルされない可能性があるように思われます(プリコンパイル済みヘッダーファイル)。

解決策は、個々のソースファイルを手動でコンパイルして生成された.objファイルをすべて手動で削除することでした。プロジェクトの設定によっては、プロジェクトでCleanを実行することもできます。

+0

確かに、この問題はすべて修正/再構築されています。 – aquirdturtle

関連する問題