Tôi gặp sự cố khi liên kết OpenCV trong Xcode. Tôi đã cài đặt OpenCV sử dụng brew:Ký hiệu không xác định đối với lỗi kiến trúc x86_64 khi liên kết OpenCV trong Xcode
brew tap homebrew/science
sudo brew install opencv
tôi bắt đầu một dự án Xcode commandline mới, thêm /usr/local/lib
và /usr/local/include
vào thư viện và tiêu đề con đường tìm kiếm. Tôi cũng đã thêm đầu ra của pkg-config --libs opencv
đến other linker options
.
Nhưng khi tôi cố gắng để biên dịch chương trình này mẫu nhỏ:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main(int argc, char *argv[])
{
cv::Mat test;
cv::namedWindow("Display window", CV_WINDOW_AUTOSIZE);// Create a window for display.
cv::waitKey(0); // Wait for a keystroke in the window
return 0;
}
tôi nhận được lỗi mối liên kết sau đây:
Undefined symbols for architecture x86_64:
"cv::namedWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
Nhưng tôi có thể biên dịch chương trình trên dòng lệnh sử dụng
g++ `pkg-config --cflags --libs opencv` prog.cpp
Vì vậy, tôi nghĩ rằng vấn đề là cách Xcode được thiết lập. Nhưng tôi không thể xác định chính xác những gì là khác nhau giữa cách biên dịch Xcode và đối số dòng lệnh của tôi.
Có ai biết lý do của lỗi này hoặc có ý tưởng tôi có thể cố gắng điều tra sự cố không?
này tạo ra các lỗi tương tự. Thư viện của tôi được đặt tên hơi khác nhau. 'libopencv_core.dylib' Nhưng tôi không nghĩ đó là vấn đề. Ngoài ra, nó có nên tạo sự khác biệt chính xác như thế nào tôi thêm chúng? Sử dụng 'tùy chọn liên kết khác' Tôi đã cố gắng tạo lại phiên bản dòng lệnh của mình tốt nhất có thể. Có cách nào để kiểm tra xem xcode có thực sự sử dụng các thư viện đó để liên kết không? – sietschie
@sietschie Xem câu trả lời đã chỉnh sửa của tôi, tôi đã thêm một cài đặt Xcode khác có thể gây ra sự cố này. –
Sử dụng 'libstdC++' đã sửa lỗi của tôi. – sietschie