GoogleTestで単体テストコード作成を実施しておりますが、多数のエラーが出てしまっております。
ネットの手順に沿ったつもりなのですが、理由が分からず困っております。
対策方法をご教授願えないでしょうか。
作成手順
①googletest-release-1.7.0をDL
②zip解凍
③Win32コンソールアプリソリューション作成
④ソリューションにgtest.slnを追加。
⑤参照にgtest.vcprojを追加。
⑤テストプロジェクトのプロパティ[C/C++]-[全般]-[追加のインクルードディレクトリ]に「googletest-release-1.7.0\include」を追加。
※ここで記載のパス相対ですが、実際はフルパスです。
⑥テストコードを「#include <gtest/gtest.h>」など入れつつ作成。
出ているエラー
error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) は既に gtestd.lib(gtest-all.obj) で定義されています。 error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) は既に gtestd.lib(gtest-all.obj) で定義されています。 error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) は既に gtestd.lib(gtest-all.obj) で定義されています。 error LNK2005: "public: __int64 __thiscall std::ios_base::width(__int64)" (?width@ios_base@std@@QAE_J_J@Z) は既に gtestd.lib(gtest-all.obj) で定義されています。 error LNK2005: "public: __int64 __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) は既に gtestd.lib(gtest-all.obj) で定義されています。 ・ ・ 文字数制限につき、省略。 ・ error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 error LNK1120: 外部参照 1 が未解決です。
開発環境
Visual Studio 2010
プログラムのコードを示さず、エラーメッセージだけから原因が判るはずないじゃん。
行き先も言わずに「どこへ行ったら良いか教えて下さい」と見ず知らずの人に尋ねて、まともな答えが返ってくると思いますか?
リンクエラーコード(LNK2005等)でググってみましょう。
→https://docs.microsoft.com/ja-jp/cpp/error-messages/tool-errors/linker-tools-errors-and-warnings?view=vs-2019
C++11 に対応したコンパイラが必要となっているので、Visual Studio 2010 だとコンパイルできないのではないでしょうか。コンパイラを最新の Visual Studio にアップデートされてはどうでしょうか。
https://github.com/google/googletest
gtestのバージョンを落としたりしていくと、動作してくれました。
回答1件
あなたの回答
tips
プレビュー