Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: sakren 20 Prosince 2010, 17:25:50

Název: Qt, opencv, undefined reference to 'cvCreateCameraCapture' [vyřešeno]
Přispěvatel: sakren 20 Prosince 2010, 17:25:50
Zdravím, chtěl jsem vyzkoušet knihovnu opencv pro práci s webkamerou, ovšem při kompilaci se ukazuje chyba "undefined reference to 'cvCreateCameraCapture'". Velmi děkuji za případné odpovědi.
Kód: [Vybrat]
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv/cv.h>
#include <opencv/highgui.h>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect( ui->pushButton, SIGNAL( clicked() ), this, SLOT( click()) );
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::click() {
    CvCapture * cap = cvCaptureFromCAM( 0 );  /* ZDE JE CHYBA */
}
Název: Re: Qt, opencv, undefined reference to 'cvCreateCameraCapture'
Přispěvatel: Martin - ViPEr*CZ* 20 Prosince 2010, 21:40:02
Chyba znamená to, že kompilátor nezná tu funkci cvCreateCameraCapture. Takže je někde chyba v linkování hlavičkového souboru, který obsahuje definici této funkce ;)
Název: Re: Qt, opencv, undefined reference to 'cvCreateCameraCapture'
Přispěvatel: Martin - ViPEr*CZ* 21 Prosince 2010, 11:40:05
PS: no a jelikož jsem po dlouhé době něco kompiloval... tak kompilátor je tak trochu hloupej a vyhazuje tuhle chybu... ale u Vás si myslím, že půjde o nedolinkování knihovny přímo kompilátoru... což samotné include v hlavičkovém souboru nezajistí a je třeba kompilovat s příznakem -lopencv. Jelikož asi používáte IDE QT Creator, tak je potřeba někde v konfiguraci projketu přidat, aby linkoval tuto knihovnu... zkuste hledat... z hlavy nevím přesně cestu a nemám možnost momentálně zjistit.

viz. více o kompilaci: http://opencv.willowgarage.com/wiki/CompileOpenCVUsingLinux
Název: Re: Qt, opencv, undefined reference to 'cvCreateCameraCapture'
Přispěvatel: sakren 21 Prosince 2010, 22:20:53
Ano bylo to tak. Stačilo přidat do .pro souboru mého projektu toto:
Kód: [Vybrat]
INCLUDEPATH += /usr/local/include/opencv/

LIBS += /usr/local/lib/libopencv_highgui.so \
    /usr/local/lib/libopencv_core.so
a již vše funguje. Mockrát děkuji