2013-01-07 14 views
5

Przy budowie test z QTestLib, otrzymuję „niezdefiniowane symbole” błąd na qCompare funkcji:niezdefiniowane symbole QCompare

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

Odpowiedz

5

można rozszyfrować zniekształcone symbol przepuszczając ją przez c++filt w linii poleceń:

echo __ZN5QTest8qCompareIimEEbRKT_RKT0_PKcS8_S8_i | c++filt 

... który drukuje C++ funkcja podpis takiego:

bool QTest::qCompare<int, unsigned long>(int const&, unsigned long const&, char const*, char const*, char const*, int) 

Dwa argumenty dotyczące makra QCOMPARE - tj. Dwóch argumentów szablonu dla funkcji qCompare - muszą mieć dokładnie ten sam typ. Otrzymasz błąd, na przykład, jeśli jeden jest int, a drugi to size_t.

+2

... więc rozwiązaniem jest static_cast typów lub, w przypadku liter, użyj poprawnego typu za pomocą "0ul" itp. –

Powiązane problemy