2016-05-03 15 views
5

ho incontrato il seguente errore quando ho provato a compilare affdex sdk sample applicationsindefinito riferimento al processo (std :: __ cxx11 :: basic_string ...) durante la compilazione applicazioni di esempio Linux affdex

Linking CXX executable video-demo 
CMakeFiles/video-demo.dir/video-demo.cpp.o: In function 'main': 
video-demo.cpp:(.text+0x11cb): undefined reference to 
affdex::VideoDetector::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) 
collect2: error: ld returned 1 exit status 

sto usando GCC 5.2. 1

risposta

7

il mio sospetto iniziale era che il problema sta tentando di compilare le applicazioni che utilizzano una versione più recente di GCC o meglio GLIBCXX di quello che l'SDK è compilato con (GCC v4.8).

Il msg di errore si riferisce ad una funzione non definita che il compilatore non è in grado di trovare ..

undefined reference to `affdex::VideoDetector::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) 

Il problema qui è in realtà la definizione del tipo di parametro (uno std :: string) .. il compilatore è alla ricerca di:

std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 

Ma, il tipo attuale definizione del parametro nella biblioteca compilato è ..

std::basic_string<char, std::char_traits<char>, std::allocator<char> > 

Come risulta, GCC 5 ha introdotto new implementations of std::string and std::list. È possibile provare la soluzione alternativa here per verificare se è possibile completare correttamente il processo di collegamento, ma l'opzione più sicura consiste nel ricorrere all'utilizzo di GCC 4.8.

nota, GCC 4.8 possono essere recuperate dal repository di Ubuntu ..

+5

Con problemi come questo, è sorprendente per me che qualcuno usa ancora C++ .... – ineedahero