Mam projekt opencv, który rozwijam w ramach Ubuntu 12.04, na maszynie wirtualnej parellels na Macu, który ma architekturę x86_64. Było wiele problemów związanych z przełączaniem ekranów, które według mnie są spowodowane VM, gdzie tryby wideo w Linuksie zmieniają się na kilka sekund, podczas gdy dostęp do kamery jest dokonywany przez aplikację opencv. Postanowiłem przenieść projekt do Xcode po macowej stronie komputera, aby kontynuować rozwój opencv. Jednak nie jestem zaznajomiony z Xcode i mam problemy z prawidłowym budowaniem projektu.Kompilowanie opencv 2.4 na 64-bitowym Macu w Xcode
Mam zainstalowany kod xcode. Pobrałem i rozpakowałem najnowszą wersję opencv na Macu i uruchomiłem: ~/src/opencv/build/cmake-gui -G Xcode .. zgodnie z instrukcjami z willowgarage i różnych innych lokalizacji. Wyglądało na to, że działa dobrze (jednak zastanawiam się teraz, czy brakuje mi ustawienia architektury tutaj, mimo że jest to 64-bitowa intel w Xcode). Następnie ustawiłem projekt xcode z plikami źródłowymi z projektu linuksowego i zmieniłem katalogi włączników, aby używać/opt/local/include/... zamiast/usr/local/include/... Zmieniłem kod na użyj kompilatora LLVM GCC w ustawieniach kompilacji dla projektu następnie ustaw Apple LLVM Dialog dla C++ na Dialekt językowy na GNU ++ 11 (który wydaje się być prawdopodobnie niezgodny z powyższym wierszem)
Nie używam makefile w Xcode (mam świadomość, że ma własny plik projektu)
Wystąpił również problem z linkerem, który wyglądał, jakby mógł zostać rozwiązany przez dodanie tej flagi linkera:
-lopencv_video
na podstawie podobnego ogłoszenia tutaj: other thread Jednak w tym przypadku osoba używała pliku Makefile w swoim projekcie.
Próbowałem dodać tę flagę linkera pod "Inne flagi Linker" w ustawieniach kompilacji xcode, ale nadal dostaję błędy kompilacji.
Myślę, że mogę mieć dwa problemy tutaj, jeden z ustawieniami architektury podczas budowania bibliotek opencv z Cmake i jeden z ustawieniami flagi linkera w moim projekcie.
Obecnie lista błędów build wygląda tak:
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in main.o
"cv::_OutputArray::_OutputArray(cv::Mat&)", referenced from:
_main in main.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in main.o
"cv::Mat::copySize(cv::Mat const&)", referenced from:
cv::Mat::Mat(cv::Mat const&)in main.o
cv::Mat::operator=(cv::Mat const&)in main.o
"cv::Mat::Mat(_IplImage const*, bool)", referenced from:
_main in main.o
"cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
_main in main.o
---SNIP---
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Może ktoś podać kilka wskazówek na co próbować dalej?
Dzięki, Walt
Dziękuję verymuch ... to rozwiązało mój problem. Problem polegał na tym, że "C++ Std Library" .By domyślnie było to "libC++". Zmiana na "libstdC++" zrobiła lewę. Thankyou verymuch raz jeszcze – tez
Świetny tutorial dostał mnie dalej niż większość innych. Czy zmieniła się ta zmiana z Xcode 5 i OpenCV 2.4.6.1? Podczas instalacji sudo dostaję błędy, ale postaram się je wyśledzić na własną rękę. Dzięki! –
Zgodnie z tym komentarzem (http://stackoverflow.com/questions/14030546/linker-errors-after-upgrading-xcode-to-4-5-2-and-opencv-to-2-4-3/15662948# comment28843244_15662948), tak, są zmiany. "W OpenCV 2.4.6, Xcode 5, LLVM 5.0 i 10.8.5 musiałem ustawić zarówno dialekt językowy, jak i std library (krok 8) na" Compiler Default ". W przeciwnym razie zobaczyłbym błędy linkera (narzekałem na imwrite w szczególności) lub brakuje. " Zaktualizowałem odpowiedź. Mam nadzieję, że to działa dla ciebie. –
moubarak