理清了思路以后开始通过实例测试GF的使用过程,为了简化测试环境,这次使用的是QNX Momentics环境和QNX虚拟机环境,没有使用BeagleBoard作为运行目标,主要是怕直接在板子上运行会有其他因素影响测试。
在QNX momentics环境中创建了一个新的QNX C Project, 在main.c里先加上gf头文件的引用:
#include <gf/gf.h>
然后在main方法里加上第一步操作,就是通过fg_dev_attach()方法连接到设备上去,代码如下:
if (gf_dev_attach(&gdev, GF_DEVICE_INDEX(0), &gdev_info) != GF_ERR_OK) {
printf("gf_dev_attach() failed\n");
return (-1);
}
不管后面是否成功,先测试一下能否连接设备,很气馁地发现编译都不通过,方法gf_dev_attach的引用有问题。
不是已经将fg.h引入了吗?
在网上找了一轮,发现是链接配置有问题,需要在链接选项里加上gf库的引用,配置在项目属性的“QNX c/c++”一栏,在“Linker”页面的“Other Options”项中填写“-lgf”,如下图:

然后的测试就一路顺风顺水:
连接设备成功!
连接显示器成功!
连接显示层成功!
具体的代码在文章后面有,这里就不贴了。
到了显示表面的地方卡了,有点问题,首先是使用那个方法有点搞不清,看了文档才发现应该是调用
gf_surface_create_layer()方法创建显示表面,然后才调用gf_layer_set_surfaces()将显示表面和显示层连接起来。
然后就是一直无法创建显示表面,测试的时候总是报错。
最后从openqnx网站上找到答案,去年的贴子,和我的问题一模一样,贴子链接如下:
http://www.openqnx.com/chinese/viewtopic.php?t=2656
贴子中提到问题的原因是QNX虚拟机启动Photon界面后将资源占住了,我们的测试程序无法使用。</

本文介绍了如何在QNX Momentics环境下开发第一个图形程序,通过gf_dev_attach()连接设备,遇到的链接配置问题及解决办法,并详细展示了从创建显示表面到在QNX虚拟机上成功显示一个方框的完整过程。

4872

被折叠的 条评论
为什么被折叠?



