7

QTestLibを使用してテストを作成すると、qCompare関数の「未定義のシンボル」エラーが発生します。

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

1 に答える 1

8

マングルされたシンボル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)

マクロへの2つの引数QCOMPARE(つまり、qCompare関数への2つのテンプレート引数)は、まったく同じ型である必要があります。たとえば、一方がでint、もう一方がである場合、エラーが発生しますsize_t

于 2013-01-07T15:33:00.327 に答える