Strona 1 z 1

C++, opencv - po aktualizacji nie można kompilować programów

: 18 czerwca 2011, 23:34
autor: 5815838
Witam serdecznie.

D
okonałem aktualizacji systemu (Wheezy) i od tego momentu w trakcie próby kompilacji z użyciem biblioteki opencv wyświetla mi coś takiego:

Kod: Zaznacz cały

g++ -c opencv_webcam.cpp -o webcam.o -I/usr/include/opencv    
In file included from /usr/include/opencv/cxcore.h:1826:0,
                 from /usr/include/opencv/cv.h:58,
                 from opencv_webcam.cpp:1:
/usr/include/opencv/cxcore.hpp:177:13: error: ‘ptrdiff_t’ does not name a type
In file included from /usr/include/opencv/cxcore.hpp:2307:0,
                 from /usr/include/opencv/cxcore.h:1826,
                 from /usr/include/opencv/cv.h:58,
                 from opencv_webcam.cpp:1:
/usr/include/opencv/cxoperations.hpp:2043:15: error: ‘ptrdiff_t’ does not name a type
/usr/include/opencv/cxoperations.hpp:2591:31: error: ‘ptrdiff_t’ does not name a type
In file included from /usr/include/opencv/cxcore.hpp:2308:0,
                 from /usr/include/opencv/cxcore.h:1826,
                 from /usr/include/opencv/cv.h:58,
                 from opencv_webcam.cpp:1:
/usr/include/opencv/cxmat.hpp: In member function ‘void cv::Mat::locateROI(cv::Size&, cv::Point&) const’:
/usr/include/opencv/cxmat.hpp:387:5: error: ‘ptrdiff_t’ was not declared in this scope
/usr/include/opencv/cxmat.hpp:387:5: note: suggested alternatives:
/usr/include/c++/4.6/x86_64-linux-gnu/bits/c++config.h:156:28: note:   ‘std: :p trdiff_t’
/usr/include/c++/4.6/x86_64-linux-gnu/bits/c++config.h:156:28: note:   ‘std: :p trdiff_t’
/usr/include/opencv/cxmat.hpp:387:15: error: expected ‘;’ before ‘delta1’
/usr/include/opencv/cxmat.hpp:389:9: error: ‘delta1’ was not declared in this scope
/usr/include/opencv/cxmat.hpp:398:31: error: ‘delta2’ was not declared in this scope
/usr/include/opencv/cxmat.hpp: In member function ‘cv::Point cv::MatConstIterator_<_Tp>: :p os() const’:
/usr/include/opencv/cxmat.hpp:3459:9: error: ‘ptrdiff_t’ was not declared in this scope
/usr/include/opencv/cxmat.hpp:3459:9: note: suggested alternatives:
/usr/include/c++/4.6/x86_64-linux-gnu/bits/c++config.h:156:28: note:   ‘std: :p trdiff_t’
/usr/include/c++/4.6/x86_64-linux-gnu/bits/c++config.h:156:28: note:   ‘std: :p trdiff_t’
/usr/include/opencv/cxmat.hpp:3459:19: error: expected ‘;’ before ‘ofs’
/usr/include/opencv/cxmat.hpp:3460:23: error: ‘ofs’ was not declared in this scope
/usr/include/opencv/cxmat.hpp:3460:66: error: expected ‘)’ before ‘y’
/usr/include/opencv/cxmat.hpp:3465:9: error: ‘ptrdiff_t’ was not declared in this scope
/usr/include/opencv/cxmat.hpp:3465:9: note: suggested alternatives:
/usr/include/c++/4.6/x86_64-linux-gnu/bits/c++config.h:156:28: note:   ‘std: :p trdiff_t’
/usr/include/c++/4.6/x86_64-linux-gnu/bits/c++config.h:156:28: note:   ‘std: :p trdiff_t’
/usr/include/opencv/cxmat.hpp:3465:19: error: expected ‘;’ before ‘ofs’
/usr/include/opencv/cxmat.hpp:3466:23: error: ‘ofs’ was not declared in this scope
make: *** [opencv_webcam] Błąd 1

Nie przypuszczam żeby w repozytoriach znalazły się biblioteki, które nie działają, więc prawdopodobnie to kwestia konfiguracji, jednak nie mam pomysłu jak ten problem zniwelować.

Zamieszczam jeszcze wynik:

Kod: Zaznacz cały

 makefile
może ktoś dostrzeże błąd w nim tkwiący (jeżeli tam jest).

Kod: Zaznacz cały

CC = g++
CFLAGS = -I/usr/include/opencv
LINKS= -L/usr/lib -lm -lcv -lhighgui -lcvaux

all: webcam opencv_webcam

webcam: opencv_webcam
    $(CC) webcam.o $(LINKS) -o webcam

opencv_webcam: opencv_webcam.cpp
    $(CC) -c opencv_webcam.cpp -o webcam.o $(CFLAGS)

Dodane:
Poniekąd znalazłem odpowiedź, może się komuś przydać:
Kompiluje się ze starszą wersją g++

Kod: Zaznacz cały

CC = g++-4.5
Czy ma może ktoś pomysł co jest przyczyną?