2016-05-16 11 views
0

Ich baue ein Projekt mit Opencv 3.1 und wxwidgets 3.1. Der Code, den ich verwende: [wxOpenCv Demo 1]opencv 3.1 wxwidgets cv :: imwrite Fehler

Ich versuche, ein Schreiben Rahmenobjekt hinzufügen, mit der Funktion cv :: imwrite(). (Ich habe die c Anrufe zu C++ zB: cvQueryFrame (m_pCapture) zu m_pCapture >> m_CurFrame;)

ich diesen Fehler:

Undefined symbols for architecture x86_64:

"cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector > const&)", referenced from:

CCamera::SaveFrame() in camera.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

Ohne wxwidgets die opencv Funktionen funktionieren. Es scheint also, dass es mit der Kombination von wxwidgets und opencv zu tun hat.

Dies funktioniert gut mit wxwidgets und OpenCV:

cv::imshow("tmp",m_CurFrame); 
cv::waitKey(4); 
//  cv::imwrite(Tmp , m_CurFrame); 

Wenn ich die letzte Zeile Kommentar-, ich den Fehler.

OS X: 10 Yosemite und ich verwende die Standard-Compiler (von Apple LLVM 7.0)

Ich habe keine Ahnung, was dies zu tun!

+0

@DanQuichot, Was ist Ihnen OS/Compiler ? – Igor

+0

OS X 10 Yosemite und ich verwenden den Standard-Compiler (Apple LLVM 7.0) –

+0

können Sie zeigen, welche Typen Sie übergeben, um zu schreiben? – Igor

Antwort

0

löste das Problem (und mehr) durch erneutes Kompilieren von WXWidgets 3.1.0 und OpenCV 3.1. Ich habe diese Links benutzt, um es in Gang zu bringen.

Kleiner Leitfaden zur Erstellung von wxWidgets, OpenCV gegen C++ 11:

Compile wxwidgets 3.1.0: Ich folgte dem install.txt für OSX. Und gezwickt den ../configure Anruf mit Hilfe von this

ich hinzugefügt: --enable-debug und änderte die MacOSX Version

../configure --disable-shared --enable-debug --enable-unicode --with-cocoa --with-macosx-version-min=10.7 --with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk CXXFLAGS="-std=c++0x -stdlib=libc++" CPPFLAGS="-stdlib=libc++" LIBS=-lc++ 

Dann mit Hilfe von this page ich ein Xcode-Projekt zu bauen. Tweaking ein paar Dinge: (wxcocoa.xcodeproj und minimal.xcodeproj und ein alle neuen Projekte)

  • In den Header-Suchpfad: $(WXROOT)/build/osx
  • Basis SDK (wx.xcconfig zu finden): neueste OS X (10.11)
  • C Sprache Dialekt: GNU 11 (nicht sicher, ob dies richtig ist)
  • C++ Sprache Dialekt: GNU++11 [-std=gnu++11]
  • C++ Standard Library: libc++ (LLVM C++ standard library with C++ 11 support)
  • platzierte den WXROOT unter "preference-> locations-> Source Trees". Nicht wichtig, aber scheint ein besserer Ort zu sein (xcode neu starten)
  • in wxcocoa.xcconfig I geändert: MACOSX_DEPLOYMENT_TARGET = 10.10
  • Irgendwie muss ich von libwx_osx_cocoa_static.a, um den Namen der erstellten Bibliothek ändern: lwx_osx_cocoa_static.a (warum, weiß ich nicht)

Ich benutze GNU ++ 11 und damit libC++ in der Lage sein zu verwenden, neue Funktionen wie „Zukunft“ ich fügte dann OpenCV mein neu wxXcode Projekt erstellt:

  • Compile OpenCV die folgenden: (Suche im Internet nach: Howto-install-Build-and-use-opencv-macosx-10 -10)
  • machen sur e dass das SDK die richtige Version ist (hier war mein größtes Problem), passend zum Build von wxWidgets
  • Die Compilereinstellungen wie für wxWidgets (siehe oben) (hinzugefügt :) Dazu habe ich einige Zeilen hinzugefügt CMakeLists.txt im (Opencv-master-Ordner). Unter dem Strich: # OpenCV compiler and linker options (fand ich diesen Trick: die Web-Suche nach: "Einrichten von Xcode für C++ 11 mit libC++" OpenCV with C++11 on OS X 10.8

    Nachricht() Satz (CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "C++ 0x") Satz (CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libC++")

  • Dann diese Seite folgen Sie dem neu erstellten wxWidgets Xcode-Projekt zu aktualisieren (Suche im Internet nach: Howto-setup-Xcode-6-1-to-Work-mit-opencv-Bibliotheken)

Dies sollte den Trick tun! Ich kann jetzt WxWidgets kombinieren, OpenCV und die libC++ (Multithreading, „Zukunft")

Ich hoffe, das hilft. Bitte lassen Sie mich wissen, wenn Sie mehr herausgefunden!