2012-03-29 15 views
5

hereと記載されているとおり、Googleテストをインストールしました。しかし、現在のプロジェクトでテストを使用しようとすると、2つのLNK4098の警告が表示されます。Visual Studio 2010を使用してgtestを実行中:LNK4098およびLNK2005

defaultlib 'MSVCRTD'は他のライブラリの使用と競合します。/NODEFAULTLIB:library

と 'LIBCMTD'と同じで、LNK2005エラーの束を使用してください。しかし、私が実際にこれらの2つのデフォルトライブラリを無視すると、それは役に立たない。どうしたの?

+2

同じランタイムライブラリ構成を使用してすべてのものを構築する必要がある方法にリンクした回答をお読みになりましたか?一部のパーツのように聞こえるようになっているエラーは、非デバッグランタイムとデバッグランタイムを使用してビルドされたものを使用して構築されます。 –

答えて

6

あなたのプロジェクトは、同じバージョンのCランタイムライブラリ(CRT)を使用して構築されていることを確認する必要があります。 Googleテスト(現在v1.6.0)は2つのVisual Studioソリューションファイルを提供しています。静的バージョンを使用するgtest-1.6.0\msvc\gtest.slnと、動的(dll)バージョンを使用するgtest-1.6.0\msvc\gtest-md.slnがあります。既定では、Visual Studioを使用して作成されたプロジェクトはdllバージョンを使用します。

プロジェクトでCRTの静的または動的バージョンを使用するかどうかを決定する必要があります。

静的バージョンを使用するようにプロジェクトを設定するには、Project->Propertiesにアクセスし、ウィンドウの左上にある[設定:Debug]を選択します。次に同じウィンドウでConfiguration Properties - >C/C++ - >Code Generationを選択します。 Runtime LibraryのオプションはMulti-threaded Debug (/MTd)である必要があります。 >Linker - - >Input

あなたは、あなたはGTESTの適切なバージョンにリンクしていることを確認、そのConfiguration Propertiesを選択する必要があります。 gtestライブラリのデバッグバージョン(例:C:\gtest-1.6.0\msvc\gtest\Debug\gtestd.lib)へのフルパスを指定して、Additional Dependenciesフィールドを編集します。

は、リリースの設定のためにもう一度同じことを行いますが、Multi-threaded (/MT)Runtime Libraryオプションを設定し、GTESTライブラリー(例えばC:\gtest-1.6.0\msvc\gtest\Release\gtest.lib)のリリースバージョンへの完全なパスを提供します。あなたはCRTのDLLバージョンを使用することを決定した場合

gtest-1.6.0\msvc\gtest-md\...いうよりgtest-1.6.0\msvc\gtest\...になりますGTEST-MDライブラリへMulti-threaded Debug DLL (/MDd)Multi-threaded DLL (/MD)、およびリンクを選択します。

関連する問題