13

私は最近、2005年から2012年にアップグレードしました(私はかなり確信しています)、私のソリューションを構築する際にリンクエラーに遭遇しました。私は時間をかけてgoogleとputsingのアイデアを使い果たしました。私は何十ものプロジェクトを設定しているので、私はすべてのことを正しくやったと確信していますが、公正であるためには数年です。Visual Studio 2012の静的ライブラリとのリンクエラー

私はテストとして新しいプロジェクトを立ち上げました。私はそれをWindowsアプリケーション(.exe)と呼んでいます。私はコアと呼ばれる2番目のプロジェクトを作成し、静的ライブラリ(.lib)として設定タイプにフラグを立てました。どちらもソリューションの一部です。コアでは、単純な関数を持つ小さなクラスを含むTest.cppとTest.hを追加しました。次に、ウィンドウのアプリケーションのWinMain.cppファイル内に、私はWinMain()を持っています。ここで、このテストクラスにはCTestテストを呼び出します。テスト結果();

私はプロジェクトのプロジェクトの依存関係をコアに設定し、最後にアプリケーションの追加インクルードディレクトリにTest.cpp/.hがあるコアコードへのパスを追加しました。

私は以下のリンクエラーを受け取り、私の人生の間に理由を理解できません。誰かが忘れたかもしれないステップや、2012年に以前のバージョンから何が変わったのかを知っていますか?助けを借りてありがとうございました!

1>------ Build started: Project: App, Configuration: Debug Win32 ------ 
1>WinMain.obj : error LNK2019: unresolved external symbol "public: __thiscall CTest::CTest(void)" ([email protected]@[email protected]) referenced in function [email protected] 
1>WinMain.obj : error LNK2019: unresolved external symbol "public: __thiscall CTest::~CTest(void)" ([email protected]@[email protected]) referenced in function [email protected] 
1>WinMain.obj : error LNK2019: unresolved external symbol "public: int __thiscall CTest::Result(void)" ([email protected]@@QAEHXZ) referenced in function [email protected] 
1>D:\Work\Test_Linker_Stupidity\App\Debug\App.exe : fatal error LNK1120: 3 unresolved externals 
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ======== 

答えて

27

Visual Studio 2005のは、それが自動的にすべての.libファイル出力にリンクするプロジェクトの依存関係を持ついくつかの魔法を(私は残念ながらそれを実装助けた開発者だった)でした。これは、以前のVisual C++ビルドシステムがMSBuildに置き換えられたときにVisual Studio 2010が削除されたためです。しかし

、機能「静的ライブラリの依存関係の自動リンクは、」まだ、プロジェクト参照を経由して見つけることができます:

  • 右のアプリプロジェクトをクリックして選択し、「参照...」を
  • をクリックして「追加します新しいリファレンス "を参照してください。
  • 静的ライブラリプロジェクトを確認し、OKを押します。
  • ビルド。

静的ライブラリが自動的にリンクされているはずです。プロジェクト参照にはプロジェクト依存関係も含まれています。

代わりにプロジェクト依存関係を使用する場合は、他の静的ライブラリ入力と同様に、「App」プロジェクトのリンカの追加の依存関係プロパティに静的ライブラリを追加する必要があります。

編集:また、プロジェクト参照に「リンクライブラリの依存関係」というプロパティが表示されます。これは、参照されるプロジェクトの.lib出力がリンクされるかどうかを制御します(デフォルトはtrue)。

+1

ありがとうございました!私は昨夜FBでいくつかの友人にpingをして、彼らは同じ方向に私を指摘した。私が同じソリューションを参照している他の記事を見つけられなかったことは驚くべきことでしたので、将来的には他の人に有益なものになることを願っています。 私はlibsに入力を加えてみましたが、確かにうまくいったが、理想よりははるかに小さかった。私は実際にその解決策を試みたことを忘れてしまった。 もう一度お世話になります! –

+0

クイックリファレンスとして、これは私が指していたリンクです: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/d69aeb0d-e5fb-41e1-98ad-9b6c7b43a3ca/# c8b80c9a-2e8d-4a06-9d0f-a63ee15a208e –

+0

非常に便利な、感謝のピーター。 – Ken

関連する問題