2014-04-25 16 views
5

Sono su Ubuntu Trusty e sto costruendo il seguente codice con questo comando. Sono nuovo di clang e potrei usare la guida per il debug di questi errori. I file cpp e hpp questi binding C sono compilati correttamente. Ho copiato le intestazioni da questi file nel file di seguito ho elencato qui, w.cppriferimento indefinito al simbolo '_ZNSt8ios_base4InitD1Ev @@ GLIBCXX_3.4' edificio OpenCV su Ubuntu

clang -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv` 

Qui sono gli errori:

 /usr/bin/ld: /tmp/w-2a90f4.o: undefined reference to 
     symbol '[email protected]@GLIBCXX_3.4' 
     //usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding 
     symbols: DSO missing from command line 
     clang: error: linker command failed with exit code 1 
      (use -v to see invocation) 

Ecco il contenuto della w.cpp. Sto provando a fare un benchmark del codice usando il clang .

 #include <opencv2/c/mat.hpp> 
     #include <opencv2/c/opencv_generated.hpp> 
     using namespace cv; 
     using namespace std; 
     using namespace flann; 
     using namespace cvflann; 


     void cv_delete(char* self) { 
      delete self; 
     } 


     Mat* cv_create_Mat() { 
      return new Mat(); 
     } 


     BFMatcher* cv_create_BFMatcher(int normType, bool crossCheck) { 
      return new BFMatcher(normType, crossCheck); 
     } 




     int main() { 

     for(int a = 1; a < 20; a++) 
      { 
       Mat a = &cv_create_Mat(); 

       cv_delete(a); 
      } 

     } 
+1

'C++ filt' dice che' _ZNSt8ios_base4InitD1Ev' è il/nome storpiato decorato per 'std :: :: ios_base Init :: ~ Init() '. Il '@@ GLIBCXX_3.4' è chiaramente un tag di versione della libreria, ma non conosco il meccanismo per come dovrebbe funzionare. –

+3

Prova ad aggiungere: '-stdlib = libC++' –

+0

@Brett Hale Grazie per aver commentato il mio post:) ... Questo ha aiutato ... ora sto ottenendo /usr/local/include/opencv2/core/cvdef.h : 343: 12: errore fatale: file "cmath" non trovato # include user3517736

risposta

11

Ho avuto lo stesso errore utilizzando gcc invece di g ++, credo che è necessario utilizzare clang ++

clang++ -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv` 
Problemi correlati