我使用的是 Mac,我的项目使用 CLion。我正在尝试使用 google 测试框架进行单元测试,但基本示例和演示都抛出此错误:
dyld:找不到符号:__ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13get_allocatorEv
引用自:/path/to/google_tests/cmake-build-debug/Google_Tests_run
预期在:/usr/lib/libstdc++.6.dylib
这是一个抛出此错误的简单项目
组织
CMakeLists.txt (root)
cmake_minimum_required(VERSION 3.17)
project(test_gtest)
set(SOURCE_FILES main.cpp)
add_executable(example ${SOURCE_FILES})
set(CMAKE_CXX_STANDARD 14)
add_subdirectory(Google_tests)
CMakeLists.txt(在 google_tests 中)
project(Google_tests)
add_subdirectory(lib)
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
# adding the Google_Tests_run target
add_executable(Google_Tests_run Test.cpp)
target_link_libraries(Google_Tests_run gtest gtest_main)
Main.cpp
int main () {
return 0;
}
测试.cpp
#include "gtest/gtest.h"
TEST(TestSuite, Test1){ // 12/2/2020 -> 737761
EXPECT_EQ(1, 1);
}
在 lib 内部,我从官方存储库 https://github.com/google/googletest 克隆了代码。
在克隆 CLion google 测试教程 https://github.com/MarinaKalashina/DateConverter_withTests 中使用的存储库时,我遇到了同样的错误。
事实证明这根本不是谷歌测试的问题。我的 gcc 安装是罪魁祸首,我通过运行 brew doctor
发现了这一点,这表明我的 gcc 安装没有链接。链接和升级安装解决了这个问题。我希望这对某人有所帮助。