首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在linux上使用bjam编译使用opencv的c ++应用程序(ubuntu)

在linux上使用bjam编译使用opencv的c ++应用程序(ubuntu)
EN

Stack Overflow用户
提问于 2018-12-10 06:11:59
回答 1查看 0关注 0票数 0

我不是提升c ++或linux专家,但我已经分配了一个项目,我需要编译一个需要使用bjam,jamroot和famfile文件编译的opencv应用程序...

但是当我使用imshow(window_name,frame)时; opencv函数我在编译期间遇到以下错误

代码语言:javascript
复制
**** Build of configuration Default for project viostream-exported ****

make all 
#bjam FaceDetector variant=release link=static toolset=gcc -q -j 3
bjam test_viostream variant=release link=static toolset=gcc -q -j 3
...found 208 targets...
...updating 1 target...
gcc.link test/bin/gcc-4.6/release/link-static/test_viostream
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libopencv_highgui.a(window_gtk.o): In function `icvOnTrackbar(_GtkWidget*, void*)':
(.text._ZL13icvOnTrackbarP10_GtkWidgetPv+0x15): undefined reference to `gtk_range_get_type'
make: *** [all] Error 1
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libopencv_highgui.a(window_gtk.o): In function `icvOnTrackbar(_GtkWidget*, void*)':
(.text._ZL13icvOnTrackbarP10_GtkWidgetPv+0x20): undefined reference to `g_type_check_instance_cast'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libopencv_highgui.a(window_gtk.o): In function `icvOnTrackbar(_GtkWidget*, void*)':
(.text._ZL13icvOnTrackbarP10_GtkWidgetPv+0x28): undefined reference to `gtk_range_get_value'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libopencv_highgui.a(window_gtk.o): In function `icvWindowThreadLoop()':
(.text._ZL19icvWindowThreadLoopv+0x10): undefined reference to `g_mutex_lock'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libopencv_highgui.a(window_gtk.o): In function `icvWindowThreadLoop()':
(.text._ZL19icvWindowThreadLoopv+0x17): undefined reference to `gtk_main_iteration_do'
.........................blah blah blah blah blah ............................
...........................................................
    "g++"    -o "test/bin/gcc-4.6/release/link-static/test_viostream" -Wl,--start-group "test/bin/gcc-4.6/release/link-static/test_viostream.o" "/home/Desktop/viostream-exported/viostream/bin/gcc-4.6/release/link-static/libviostream.a"  -Wl,-Bstatic -lopencv_flann -lopencv_legacy -lopencv_contrib -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_video -lopencv_ml -lopencv_highgui -lopencv_imgproc -lopencv_core -lfreetype -lboost_chrono -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -Wl,-Bdynamic -lswscale -lavdevice -lavcodec -lavformat -lavutil -lGLEW -lglut -lGL -lmgl -lz -lpthread -Wl,--end-group  


...failed gcc.link test/bin/gcc-4.6/release/link-static/test_viostream...
...failed updating 1 target...

有任何想法吗?

ps这是我在项目jamfile中写的

代码语言:javascript
复制
exe test_viostream
    :   $(path_viostream)//viostream
        test_viostream.cpp
    :   
        <include>$(path_vocr) 
        <include>$(path_ma) 
        <include>$(path_viostream) 
        <include>$(path_singularity)
        <include>/usr/include/freetype2
        <include>/usr/include/opencv
    :   <cxxflags>-std=c++0x 
    ;

我还在jamfile中声明opencv库如下

代码语言:javascript
复制
lib opencv_core : : <name>opencv_core ;
lib opencv_imgproc : : <name>opencv_imgproc ;
lib opencv_highgui : : <name>opencv_highgui ;
lib opencv_ml : : <name>opencv_ml ;
lib opencv_video : : <name>opencv_video ;
lib opencv_features2d : : <name>opencv_features2d ;
lib opencv_calib3d : : <name>opencv_calib3d ;
lib opencv_objdetect : : <name>opencv_objdetect ;
lib opencv_contrib : : <name>opencv_contrib ;
lib opencv_legacy : : <name>opencv_legacy ;
lib opencv_flann : : <name>opencv_flann ;
alias opencv : opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann ; 
EN

回答 1

Stack Overflow用户

发布于 2018-12-10 15:38:56

我找到了解决方案......我只需要修改opencv的库声明如下:

代码语言:javascript
复制
lib opencv_core : : <name>opencv_core <link>shared   ;
lib opencv_imgproc : : <name>opencv_imgproc <link>shared   ;
lib opencv_highgui : : <name>opencv_highgui <link>shared   ;
lib opencv_ml : : <name>opencv_ml <link>shared ;  
lib opencv_video : : <name>opencv_video <link>shared ; 
lib opencv_features2d : : <name>opencv_features2d <link>shared ; 
lib opencv_calib3d : : <name>opencv_calib3d <link>shared ; 
lib opencv_objdetect : : <name>opencv_objdetect <link>shared ; 
lib opencv_contrib : : <name>opencv_contrib <link>shared ; 
lib opencv_legacy : : <name>opencv_legacy <link>shared ; 
lib opencv_flann : : <name>opencv_flann <link>shared ; 
alias opencv : opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann ; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档