Jestem na Ubuntu Trusty i buduję następujący kod za pomocą tego polecenia. Jestem nowy, aby zadzwonić i mogę użyć pomocy w debugowaniu tych błędów. Pliki cpp i hpp te wiązania C są z kompilacji dobrze. I kopiowane nagłówki z tych plików w pliku poniżej mam na liście, w.cppniezdefiniowane odniesienie do symbolu "_ZNSt8ios_base4InitD1Ev @@ GLIBCXX_3.4 'budynek OpenCV na Ubuntu
clang -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv`
Oto błędy:
/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)
Oto treść w.cpp. Próbuję przetestować kod przy użyciu klang .
#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);
}
}
'C++ filt' mówi, że' _ZNSt8ios_base4InitD1Ev' jest urządzony/zniekształconej nazwy dla 'std :: ios_base :: Init :: ~ Init() '. "@@ GLIBCXX_3.4" to wyraźnie jakiś tag wersjonowania biblioteki, ale nie znam mechanizmu jego działania. –
Spróbuj dodać: '-stdlib = libC++' –
@Brett Hale Dzięki za komentowanie mojego wpisu:) ... To pomogło ... teraz dostaję /usr/local/include/opencv2/core/cvdef.h : 343: 12: błąd krytyczny: plik "cmath" nie został znaleziony # to –
user3517736