Ich habe ein Problem beim Verknüpfen von OpenCV in Xcode. Ich installierte OpenCV mit brauen:Nicht definierte Symbole für Architektur x86_64 Fehler beim Verknüpfen von OpenCV in Xcode
brew tap homebrew/science
sudo brew install opencv
ich ein neues Xcode Command Projekt gestartet, hinzugefügt /usr/local/lib
und /usr/local/include
zur Bibliothek und Header-Suchpfad. Ich fügte auch die Ausgabe von pkg-config --libs opencv
zu other linker options
hinzu.
Aber wenn ich versuche, dieses kleine Beispielprogramm zu kompilieren:
#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;
}
bekomme ich folgende Linkerfehler:
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
Aber ich bin in der Lage, das Programm auf der Kommandozeile zu kompilieren
mitg++ `pkg-config --cflags --libs opencv` prog.cpp
Also ich denke, das Problem ist die Art, wie Xcode eingerichtet ist. Aber ich bin nicht in der Lage zu bestimmen, was genau zwischen der Art, wie Xcode kompiliert, und meinem Kommandozeilenargument ist.
Kennt jemand den Grund für diesen Fehler oder hat eine Idee, was ich versuchen könnte, das Problem zu untersuchen?
Dies erzeugt den gleichen Fehler. Meine Bibliotheken sind etwas anders benannt. 'libopencv_core.dylib' Aber ich glaube nicht, dass das ein Problem ist. Außerdem, sollte es einen Unterschied machen, wie genau ich sie addiere? Mit der 'anderen Linker'-Option habe ich versucht, meine Kommandozeilenversion so gut wie möglich wiederherzustellen. Gibt es eine Möglichkeit zu überprüfen, ob xcode diese Bibliotheken tatsächlich zum Linken benutzt? – sietschie
@sietschie Siehe meine bearbeitete Antwort. Ich habe eine weitere Xcode-Einstellung hinzugefügt, die dieses Problem möglicherweise verursacht. –
Verwendung von 'libstdC++' behoben mein Problem. – sietschie