使用 QTestLib 构建测试时,我收到一个qCompare
函数的“未定义符号”错误:
Undefined symbols for architecture x86_64:
"__ZN5QTest8qCompareIimEEbRKT_RKT0_PKcS8_S8_i", referenced from:
__ZN15MyTestClass22myTestFunctionEv in MyTestClass.o
c++filt
您可以通过在 shell 命令中传递损坏的符号来破译它:
echo __ZN5QTest8qCompareIimEEbRKT_RKT0_PKcS8_S8_i | c++filt
...它打印一个 C++ 函数签名,如下所示:
bool QTest::qCompare<int, unsigned long>(int const&, unsigned long const&, char const*, char const*, char const*, int)
宏的两个参数QCOMPARE
——即qCompare
函数的两个模板参数——必须具有完全相同的类型。例如,如果一个是 anint
而另一个是 a ,则会出现错误size_t
。