5

XCode 4.6.3 での Google テストの問題

皆さんこんにちは、

Google テストを XCode プロジェクトに統合しました。ユニット テスト用の基本的なコマンド ライン ツールは正常に動作しているようです (guest.framework が追加され、DYLD_LIBRRY_PATH が正しく設定されています)。

ただし、オブジェクト フィクスチャ EXPECT_EQ(0, Object.PublicMember) タイプ テストに追加するとすぐに、次のリンカ エラーが発生します。

Ld /Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug/UnitTest normal x86_64
cd /Users/rinkevic/Development/VeloxChemX
setenv MACOSX_DEPLOYMENT_TARGET 10.8
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -L/Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug -F/Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug -F/Users/rinkevic/Development/Frameworks -F/Users/rinkevic/Development/VeloxChemX/../../Library/Frameworks -F/Users/rinkevic/Development/VeloxChemX/../Frameworks -filelist /Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Intermediates/VeloxChemX.build/Debug/UnitTest.build/Objects-normal/x86_64/UnitTest.LinkFileList -mmacosx-version-min=10.8 -stdlib=libc++ -framework gtest -framework OpenCL -o /Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug/UnitTest


Undefined symbols for architecture x86_64:
"testing::internal::EqFailure(char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)", referenced from:testing::AssertionResult testing::internal::CmpHelperEQ<int, int>(char const*, char const*, int const&, int const&) in TestCartMom.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私が間違っていることは何ですか?

4

4 に答える 4

6

私も同じ問題を抱えていました。

両方のプロジェクトで libstdc++ を選択します。

于 2014-01-13T14:47:01.477 に答える
2

これは、単体テスト プロジェクトのビルド オプションが gtest プロジェクトと異なるためです。「Apple LLVM - Language」や「Apple LLVM - Language - C++」などのビルド オプションがすべて同じであることを確認してください。

于 2013-10-08T06:17:07.620 に答える
1

フレームワークを使用せず、代わりに /usr/local にインストールすることで、状況にある程度の正気をもたらします

libgtest.a のように、「lib」で始まるようにライブラリの名前を変更する必要があることに注意してください。

また、libgtest.a と libgtest_main.a の両方にリンクする必要があることにも注意してください。後者がないと、main メソッドが欠落しているという苦情が寄せられます。

C++の方言とライブラリに関する同じコメントが当てはまりますが、フレームワークを作成してリンクしようとしているときにこれらを制御するのは非常に難しいことがわかりました。

于 2014-07-01T19:53:03.647 に答える