QTestLibを使用してテストを作成すると、qCompare
関数の「未定義のシンボル」エラーが発生します。
Undefined symbols for architecture x86_64:
"__ZN5QTest8qCompareIimEEbRKT_RKT0_PKcS8_S8_i", referenced from:
__ZN15MyTestClass22myTestFunctionEv in MyTestClass.o
マングルされたシンボル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
。