2017-11-09 3 views
1

Ich war auf der Suche nach einer C-Processing-Bild-Bibliothek und finden Sie heraus, dass OpenCV-Bibliothek am bequemsten war (Laut Menschen-Tipps). Also habe ich beschlossen, die neueste Version zu installieren, aber wenn ich versuche, es zu meinem bestehenden GTK + (C) Projekt einzubeziehen, es gab mir kompilieren Fehler:Können wir sowohl OpenCv-3.3.0 als auch GTK + 3 mit gcc mit C-Code kompilieren?

undefined reference to cvRound 

Genaue Nachricht ist:

$ gcc ./bin/app.o \ 
    $(pkg-config --libs glib-2.0) \ 
    $(pkg-config --libs pango) \ 
    $(pkg-config --libs gtk+-3.0) \ 
    $(pkg-config --libs gmodule-2.0) \ 
    $(pkg-config --libs opencv) -o bin/app 

./bin/app.o : Dans la fonction « cvPointFrom32f » : 
app.c:(.text+0x557) : référence indéfinie vers « cvRound » 
app.c:(.text+0x56d) : référence indéfinie vers « cvRound » 
./bin/app.o : Dans la fonction « cvReadInt » : 
app.c:(.text+0xe74) : référence indéfinie vers « cvRound » 
./bin/app.o : Dans la fonction « cvEllipseBox » : 
app.c:(.text+0x10dc) : référence indéfinie vers « cvRound » 
app.c:(.text+0x10fe) : référence indéfinie vers « cvRound » 
collect2: error: ld a retourné le statut de sortie 1 
make: *** [Makefile:38: bin/app] Error 1 

So Ich wollte wissen, was ich tun kann, um OpenCV UND GTK + zu verwenden (da ich OpenCV UI nicht brauche, weil ich bereits meine habe)?

Ich habe auch versucht gcc von g zu entfernen ++ (Aber das Problem entweder nicht lösen) und jetzt kompiliert es, aber wenn ich versuche, meine Anwendung zu laufen mit:

$ ./app 

Ich habe

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported 

ich glaube, ich gebe auf die Installation von OpenCV mit GTK arbeitet machen + ...

PS: Wenn Sie irgendwelche Ratschläge oder Bibliothek Empfehlungen haben (C) ich nehme an.

+0

Haben Sie versucht mit '$ (pkg-config --cflags --libs opencv)'? Ist libopencv-dev installiert? (Ich denke schon) – purplepsycho

Antwort

1

Ihre OpenCV-Version wird höchstwahrscheinlich mit GTK + 2 erstellt. Wenn Sie also eine GTK + 3-Anwendung mit OpenCV verknüpfen, treten Konflikte auf. Sie können nicht beide Versionen in demselben Prozess haben, wie in der Fehlermeldung angegeben. Sie müssen OpenCV nur mit aktivierter GTK + 3-Unterstützung neu aufbauen.

BTW, Sie müssen nicht jede Abhängigkeit explizit beim Aufruf von pkg-config angeben, nur Toplevel-Einsen. Also $(pkg-config --libs gtk+-3.0 opencv) sollte genug sein.

+0

Wie mache ich OpenCV mit GTK + 3 neu zu erstellen? Ich habe eigentlich keine Ahnung, und in meinem Fall scheint es das Bessere zu sein. – rlasvenes

+0

Dann ist eine weitere Option, nicht mit der Bibliothek 'opencv_highgui' zu verknüpfen, da Sie Ihre eigene GUI verwenden: siehe https://stackoverflow.com/a/45112339/518853 – liberforce

Verwandte Themen