QCompare的未定义符号

时间:2013-01-07 15:33:00

标签: qt qtestlib

使用QTestLib构建测试时,qCompare函数出现“未定义符号”错误:

Undefined symbols for architecture x86_64:
  "__ZN5QTest8qCompareIimEEbRKT_RKT0_PKcS8_S8_i", referenced from:
      __ZN15MyTestClass22myTestFunctionEv in MyTestClass.o

1 个答案:

答案 0 :(得分:5)

您可以通过在shell命令中通过c++filt来解密受损的符号:

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函数的两个模板参数 - 必须具有完全相同的类型。您会收到错误,例如,如果一个是int而另一个是size_t