十一、Gio Resource

GResourceAPI和glib-compile-resources工具提供了一种高效的方法来管理应用程序和库中的二进制或文本数据,如GtkBuilder.ui文件、图像和XML。这些资源被整合到可执行文件中,实现快速加载和内存中访问。预处理功能如xml-stripblanks和json-stripblanks可用于优化文件。资源通过/glib-compile-resources编译为二进制包,并可通过get_resource()等函数访问。
struct GResource {
   
   
  /* No available fields */
}

应用程序applications和库libraries通常包含二进制或文本数据,这些数据实际上是应用程序的一部分,而不是用户数据。例如GtkBuilder .ui文件,splashscreen图像,GMenu标记XML, CSS文件,图标等。它们通常以文件的形式存储在$datadir/appname中,或者以字符串字面量的形式手动包含在代码中。

GResource API[glib-compile-resources]。[glib-compile-resources]程序提供了一个方便高效的替代方案,它有一些很好的属性。你可以像普通文件一样维护这些文件,所以很容易编辑它们,但是在构建过程中,这些文件会被组合成一个链接到可执行文件中的二进制包。这意味着加载资源文件是高效的(因为它们已经在内存中,与其他实例共享)和简单的(不需要检查I/O错误或在文件系统中定位文件)。它还使创建可重定位的应用程序变得更容易。

资源文件也可以标记为压缩文件compressed。这些文件将以压缩形式包含在资源包中,但在使用资源时将自动解除压缩。这非常有用,例如,对于只解析一次(或很少解析)然后丢弃的大型文本文件(调用次数少)。

通过将preprocess属性的值设置为逗号分隔的预处理选项列表,也可以将资源文件标记为可预处理。目前唯一支持的选项是:

xml-stripblanks它将使用xmllint命令从XML文件中去除可忽略的空白。为此,必须将XMLLINT环境变量设置为XMLLINT可执行文件的完整路径,或者必须将XMLLINT包含在该路径中;否则跳过预处理步骤。

to-pixdata(自gdk-pixbuf 2.32起已弃用),它将使用gdk-pixbuf-pixdata命令将图像转换为GdkPixdata格式,这允许您直接使用资源文件中的数据创建pixbufs,而不是它的(未压缩)副本。为此,路径中必须有gdk-pixbuf-pixdata程序,或者必须将GDK_PIXBUF_PIXDATA环境变量设置为gdk-pixbuf-pixdata可执行文件的完整路径;否则资源编译器将中止。自从gdk-pixbuf 2.32以来,to-pixdata已经被弃用,因为GResource同样支持嵌入现代图像格式。与其直接使用它**,不如在GResource中嵌入PNG或SVG文件**。

<
jiaowone@pg0:~/gazeb$ roslaunch robot scout_gazebo.launch ... logging to /home/jiaowone/.ros/log/32032c4e-7c28-11f0-9f16-32c03969c6a0/roslaunch-pg0-5644.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://pg0:36021/ SUMMARY ======== PARAMETERS * /gazebo/enable_ros_network: True * /robot_description: <?xml version="1.... * /rosdistro: melodic * /rosversion: 1.14.13 * /use_sim_time: True NODES / gazebo (gazebo_ros/gzserver) gazebo_gui (gazebo_ros/gzclient) joint_state_publisher (joint_state_publisher_gui/joint_state_publisher_gui) model (gazebo_ros/spawn_model) robot_state_publisher (robot_state_publisher/robot_state_publisher) rviz (rviz/rviz) auto-starting new master process[master]: started with pid [5679] ROS_MASTER_URI=http://localhost:11311 setting /run_id to 32032c4e-7c28-11f0-9f16-32c03969c6a0 process[rosout-1]: started with pid [5709] started core service [/rosout] process[joint_state_publisher-2]: started with pid [5716] process[robot_state_publisher-3]: started with pid [5717] process[rviz-4]: started with pid [5718] process[gazebo-5]: started with pid [5719] process[gazebo_gui-6]: started with pid [5729] process[model-7]: started with pid [5735] /usr/lib/x86_64-linux-gnu/libgnutls.so.30: version `GNUTLS_3_6_3' not found (required by /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognutls.so) Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognutls.so /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognomeproxy.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognomeproxy.so /home/jiaowone/snap/code/common/.cache/gio-modules/libgiolibproxy.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiolibproxy.so [ INFO] [1755517254.316363889]: Finished loading Gazebo ROS API Plugin. [ INFO] [1755517254.317430353]: waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, waiting... [gazebo-5] process has died [pid 5719, exit code 255, cmd /opt/ros/melodic/lib/gazebo_ros/gzserver -e ode /home/jiaowone/gazeb/src/robot/worlds/lab.world __name:=gazebo __log:=/home/jiaowone/.ros/log/32032c4e-7c28-11f0-9f16-32c03969c6a0/gazebo-5.log]. log file: /home/jiaowone/.ros/log/32032c4e-7c28-11f0-9f16-32c03969c6a0/gazebo-5*.log /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognutls.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognutls.so /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognomeproxy.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognomeproxy.so /home/jiaowone/snap/code/common/.cache/gio-modules/libgiolibproxy.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiolibproxy.so the rosdep view is empty: call 'sudo rosdep init' and 'rosdep update' /usr/lib/x86_64-linux-gnu/libgnutls.so.30: version `GNUTLS_3_6_3' not found (required by /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognutls.so) Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognutls.so /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognomeproxy.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiognomeproxy.so /home/jiaowone/snap/code/common/.cache/gio-modules/libgiolibproxy.so: undefined symbol: g_task_set_name Failed to load module: /home/jiaowone/snap/code/common/.cache/gio-modules/libgiolibproxy.so ^C[model-7] killing on exit [gazebo_gui-6] killing on exit [rviz-4] killing on exit [robot_state_publisher-3] killing on exit [joint_state_publisher-2] killing on exit Traceback (most recent call last): File "/opt/ros/melodic/lib/gazebo_ros/spawn_model", line 239, in <module> exit_code = sm.run() File "/opt/ros/melodic/lib/gazebo_ros/spawn_model", line 185, in run self.args.gazebo_namespace) File "/opt/ros/melodic/lib/python2.7/dist-packages/gazebo_ros/gazebo_interface.py", line 28, in spawn_urdf_model_client rospy.wait_for_service(gazebo_namespace+'/spawn_urdf_model') File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 166, in wait_for_service raise ROSInterruptException("rospy shutdown") rospy.exceptions.ROSInterruptException: rospy shutdow
最新发布
08-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值