我们可以使用C代码用gcc编译OpenCv-3.3.0和GTK + 3吗?

时间:2017-11-09 02:37:52

标签: c opencv gcc gtk gtk3

我正在寻找一个C处理图像库,并发现OpenCV库是最方便的(根据人们的意见)。所以我决定安装最新版本,但是当我尝试将它包含在我现有的GTK +(C)项目中时,它给了我编译错误:

undefined reference to cvRound

确切的信息是:

$ 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

所以,我想知道,为了使用OpenCV和GTK +我能做些什么(因为我不需要OpenCV UI,因为我已经有了我的)?

我也尝试用g ++删除gcc(但这也没有解决问题)现在它编译了,但是当我尝试使用以下命令运行我的应用程序时:

$ ./app

我得到了

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

我认为我放弃安装OpenCV以使其适用于GTK + ......

P.S:如果您有任何建议或图书馆推荐(C),我会接受它。

1 个答案:

答案 0 :(得分:1)

您的OpenCV版本很可能是使用GTK + 2构建的,因此当您将GTK + 3应用程序与OpenCV链接时,符号会发生冲突。您不能在同一进程中同时拥有这两个版本,如错误消息中所述。因此,您只需要在启用GTK + 3支持的情况下重建OpenCV。

顺便说一句,在调用pkg-config时,你不需要明确地指定每个依赖项,只需要调用它们。所以$(pkg-config --libs gtk+-3.0 opencv)就足够了。