Roboware 下打包成so 文件并引用
一、生成.so文件
在ros中编译.so文件,如同在vs中编译C++版的dll文件。具体步骤如下:
步骤1:
首先建立.h文件和一个.cpp文件(该.cpp文件就是此次封装的内容)
步骤2:
在该节点下的CMakeLists.txt文件中,如果cpp文件名为apsplan,则加入以下语句:
Indigo:
## Declare a C++ library
add_library(apsplan
src/apsplan.cpp
)
Jade:
有些版本需要加入下面这些内容:
# add_library(lidarcenter
# src/lidarcenter.cpp
# )
# add_dependencies(lidarcenter ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
# target_link_libraries(lidarcenter
# ${catkin_LIBRARIES}
# )
# add_library(trackingManager
# src/trackingManager.cpp
# )
# add_dependencies(trackingManager ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
# target_link_libraries(trackingManager
# ${catkin_LIBRARIES}
# )
步骤3:
编译整个工作空间,即可在devel文件夹下找到libapsplan.so文件
二、使用.so文件
.so文件的使用
方法一:
1、将.so文件粘贴到devel/lib文件夹下
2、该节点的CMakeLists.txt文件下添加
link_directories(
${catkin_LIB_DIRS} ~/aps/devel/lib
)
add_executable()
target_link_libraries(zzbpathplanner
${catkin_LIBRARIES} libapsplan.so
)
3、正常条件apsplan.h头文件,正常在其他文件中进行引用和调用即可
方法二:
//修正一下,一般放在 devel/lib下面当重新编译的时候,需要重新删除并加载。这个比较麻烦,所以,一般我们推荐放在工程目录下方。
放置 头文件的位置:
include_directories( include
${catkin_INCLUDE_DIRS}
)
放置 库文件位置并加入到ROS头文件目录当中;并链接加入到 ROS 库目录当中:
include_directories( lib
${catkin_INCLUDE_DIRS}
)
link_directories(${catkin_LIB_DIRS} lib)
下面一句话的作用是把 .so文件加入到 可执行文件当中。
target_link_libraries(buusensorlidar ${catkin_LIBRARIES} liblidarcenter.so)
target_link_libraries(buusensorlidar ${catkin_LIBRARIES} libtrackingManager.so)
4、其他的一些问题
[ERROR] [1509452574.424128193]: Client [/buumonitor] wants topic /buusensorgps to have datatype/md5sum [common_msgs/buusensorgps/b45936dca092ea1d9358028750aca1c5], but our version has [common_msgs/buusensorgps/faf7be4a282d2a654e8227d65f89b918]. Dropping connection.
这个原因是 数据类型不一致导致的。
还有一种情况也会导致类型不一致,当ROS版本不一致的时候,我们在indigo 下面封装的代码在jade当中无法使用,提示 dayatype/md5sum问题。
未定义的引用:
肯定是库目录错误导致的。
Roboware 下打包成so 文件并引用的更多相关文章
- Python Windows下打包成exe文件
Python Windows 下打包成exe文件,使用PyInstaller 软件环境: 1.OS:Win10 64 位 2.Python 3.7 3.安装PyInstaller 先检查是否已安装Py ...
- 关于解决pyinstaller2.1将.py打包成exe文件在中文目录下不能执行的问题
关于解决pyinstaller2.1将.py打包成exe文件在中文目录下不能执行的问题 这个问题困扰我好久了,今天终于非常偶然的在http://www.v2ex.com/t/113856#reply1 ...
- 将 Python3 文件打包成 exe 文件
我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...
- 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件
1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以 ...
- 初级——程序如何打包成apk文件
将Eclipse Android项目打包成APK文件是本文要介绍的内容,主要是来了解并学习Eclipse Android打包的内容,具体关于Eclipse Android内容的详解来看本文.Eclip ...
- Eclipse中将含有图片资源的项目打包成jar文件
前言: 最近学了GUI编程和UDP协议,心血来潮想做一个局域网内的聊天软件,前期都还算顺利,直到后来将整个项目打包成jar文件时遇到了困难.如图: 自己设置的图标不见了,但是也没有默认的图标,说明图片 ...
- java打包成jar文件
JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你找成JAR包时,它会自动生成.JAR包是 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- 【iOS越狱开发】如何将应用打包成.ipa文件
在项目开发中,我们常常需要将工程文件打包成.ipa文件,提供给越狱的iphone安装. 下面是一种方法: 1.首先应该给工程安装好配置文件(这里不再敖述),在ios device的状态下,运行成功. ...
随机推荐
- iphone CGBitmapContextCreate()函数解释
http://blog.sina.com.cn/s/blog_3e50cef401019cd2.html CGContextRef CGBitmapContextCreate ( void *data ...
- 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】
转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ...
- hdu 5082(水题)
Love Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Mac下安装npm,http-server,安装虚拟服务器
http-server是一个简单的,不需要配置的命令行下使用的http服务器.类似的还有Xampp等. 针对前端开发工程的代码不需要编译的特点,使用这种简单的服务器十分的便利. 1.安装这个首先要安装 ...
- 在Visual Studio 2013 上开发Node.js程序
[题外话] 最近准备用Node.js做些东西,于是找找看能否有Visual Studio上的插件以方便开发.结果还真找到了一个,来自微软的Node.js Tools for Visual Studio ...
- 牛客练习赛16 F 选值【二分/计数】
链接:https://www.nowcoder.com/acm/contest/84/F 来源:牛客网 题目描述 给定n个数,从中选出三个数,使得最大的那个减最小的那个的值小于等于d,问有多少种选法. ...
- 状压DP【p1879】[USACO06NOV]玉米田Corn Fields
Description 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上 ...
- PDF审计工具peepdf
PDF审计工具peepdf PDF是Portable Document Format(便携式文档格式)的缩写.它是Adobe公司推出的文件格式规范.现在,PDF是网络电子书籍的主流格式.由于PDF ...
- Guess Number Higher or Lower -- LeetCode
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- 十. 图形界面(GUI)设计2.框架窗口
窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...