2013-02-05 1 views
2

내가 수행 한 작업은 openCV 프레임 워크를 기반으로 한 tutorial의 일부 코드입니다. EdgeDetectionSample.cpp 파일에서 코드를 가져옵니다.OpenCV 프레임 워크를 이미 작동중인 프로젝트에서 사용하려고 할 때 Apple O-Linker 오류가 발생했습니다.

Undefined symbols for architecture armv7: "std::__1::basic_string, std::__1::allocator >::basic_string(std::__1::basic_string, std::__1::allocator > const&)", referenced from: cv::Exception::Exception(int, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, int) in opencv2(system.o) cv::Exception::Exception(cv::Exception const&) in opencv2(system.o) "std::__1::basic_string, std::__1::allocator >::~basic_string()", referenced from: cv::Mat::create(int, int const*, int) in opencv2(matrix.o) __ZN2cvL7setSizeERNS_3MatEiPKiPKmb in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const&, cv::Range const&) in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const*) in opencv2(matrix.o) cv::Mat::diag(int) const in opencv2(matrix.o) cv::Mat::Mat(_IplImage const*, bool) in opencv2(matrix.o) cv::Mat::reserve(unsigned long) in opencv2(matrix.o) ... "std::__1::basic_string, std::__1::allocator >::__init(char const*, unsigned long)", referenced from: cv::Mat::create(int, int const*, int) in opencv2(matrix.o) __ZN2cvL7setSizeERNS_3MatEiPKiPKmb in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const&, cv::Range const&) in opencv2(matrix.o) cv::Mat::Mat(cv::Mat const&, cv::Range const*) in opencv2(matrix.o) cv::Mat::diag(int) const in opencv2(matrix.o) cv::Mat::Mat(_IplImage const*, bool) in opencv2(matrix.o) cv::Mat::reserve(unsigned long) in opencv2(matrix.o) ... "std::_1::_vector_base_common::__throw_length_error() const", referenced from: std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) std::_1::vector, std::__1::allocator > >::_append(unsigned long) in opencv2(matrix.o) ... "std::__1::basic_string, std::__1::allocator >::operator=(std::__1::basic_string, std::__1::allocator > const&)", referenced from: cv::Exception::formatMessage() in opencv2(system.o) ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

제발 나를 도와주세요. 나는 그 오류를 읽을 수 없다.

+0

C++ 런타임 라이브러리가 연결해야하는 것처럼 보입니다. 일부 코드는 C++로 구현되어야합니다. – trojanfoe

+0

예 일부 코드는 C++에 있습니다. 누락 된 C++ 런타임 라이브러리에서 어떻게 링크 할 수 있습니까? –

+0

도움이 되나요? http://stackoverflow.com/questions/8950388/link-objective-c-application-to-c-static-library – trojanfoe

답변

4

프로젝트는 libstd++ (GNU C++ standard library)에 연결되어 있지만, 최근 OpenCV의는 libc++ (LLVM C++ standard library with C++ 11 support)에 링크 된, 그래서 당신은이 문제를 해결하는 방법은 두 가지가 있습니다 libc에 대한 영사

  1. 링크 ++
  2. 는 ++ libstd와 OpenCV의 재 구축을.

프로젝트를 libC++와 연결하려면, -> 빌드 설정 -> 'C++ 표준 라이브러리'행을 찾아 libC++를 선택하십시오.

+0

감사합니다. 내 문제를 해결합니다. :) –

관련 문제