2013-01-07 50 views
5

未定義的符號當建立一個測試用QTestLib,我得到一個「未定義的符號」錯誤的qCompare功能:爲QCompare

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

回答

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,則會出現錯誤。

+2

...所以解決的辦法是static_cast的類型,或者在文件的情況下,通過使用「0ul」等使用正確的類型。 –