1.编译时对单独一个功能包进行编译,,发生对cvflann,cv::string等的未定义引用
解决方法:在相应功能包的CMakeLists文件中找到“find OpenCV REQUIRED”,在openCV后加上需要的版本号即可,因为有可能在之前的操作中指定了OPENCV默认使用的版本号
2.编译通过后,出现无效指针 realloc(): invalid pointer的问题:编译输出如下
realloc(): invalid pointer: 0xb6268f54 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x767e2)[0xb5d277e2]
/lib/i386-linux-gnu/libc.so.6(realloc+0x263)[0xb5d2b3e3]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_ZN9QListData7reallocEi+0x37)[0xb4752567]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_ZN9QListData6appendEi+0x7c)[0xb475264c]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_ZN9QListData6appendEv+0x23)[0xb47526d3]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(+0x17f82e)[0xb483282e]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_Z21qRegisterResourceDataiPKhS0_S0_+0x101)[0xb482f211]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(+0x2a7439)[0xb495a439]
/usr/lib/i386-linux-gnu/libQt5Core.so.5(+0x52d74)[0xb4705d74]
/lib/ld-linux.so.2(+0xf216)[0xb7780216]
/lib/ld-linux.so.2(+0xf2fc)[0xb77802fc]
/lib/ld-linux.so.2(+0x11df)[0xb77721df]
======= Memory map: ========
08048000-081cb000 r-xp 00000000 08:0c 260629 /home/lcmliao/qttest/v3-build-desktop/v3
081cb000-081cc000 r--p 00182000 08:0c 260629 /home/lcmliao/qttest/v3-build-desktop/v3
081cc000-081cd000 rw-p 00183000 08:0c 260629 /home/lcmliao/qttest/v3-build-desktop/v3
09809000-0982a000 rw-p 00000000 00:00 0 [heap]
b200c000-b2013000 rw-p 00000000 00:00 0
..........
(后面还有一长串,我就不复制了)
解决方法:由于我使用的OPENCV是3.3.1版本,当时为了和ros默认的OPENCV版本号统一,结果出现上述问题,通过查阅网上资料尝试重装OPENCV,由于懒得重新下个版本,所以还是装的3.3.1,结果发现还是不行,经师兄提醒,换了2.4.13的版本,结果神奇的事情发生了,就能成功运行了,难道在结合qt的情况下需要OPENCV版本为2.4?有待考证
3.在launch文件中写了 <rosparam command="load" file="$(find map_server)/config/common_config.yaml"/>,map_server是在同级目录下,但是运行launch文件时,报错在/opt/ros/kinetic/share/map_server下找不到文件
解决方法:删除build 和devel文件夹,重新catkin build整个工程,载进行source,重新运行即可