VAPS XT开发入门教程53:Qt与VAPS XT程序集成

系列索引:VAPS XT入门系列索引

上一篇:VAPS XT开发入门教程52:视频播放器

本文探索一件事:VAPS XT使用OpenGL绘图,Qt能否直接使用VAPS XT中的OpenGL绘图。

VAPS XT开发入门教程34:加载VAPS XT CodedObject DLL不一样,因为它使用了VAPS XT内部的OpenGL机制,我们要通用的OpenGL显示方式。

VAPS XT开发入门教程35:Qt动态加载VAPS XT DLLVAPS XT开发入门教程36:Qt动态加载VAPS XT soVAPS XT开发入门教程43:Qt动态控制VAPS XT多窗口DLL不一样,因为它还是使用了VAPS XT内部的机制。

VAPS XT开发入门教程51:VxWorks653移植过程中,将VAPS XT程序源码编译为静态库,然后集成至VxWorks653工程中,本文灵感来源于此。

VxWorks653操作系统可以集成VAPS XT程序,并直接使用VAPS XT内部标准OpenGL函数绘图。

那么其他平台、框架是否也可以。

先试一试Qt,然后再看看unity3d、UE4等等其他框架。

Qt框架

Qt部分就使用QOpenGL部分代码。

VAPS XT程序

配置文件

基于wogl.cfg修改成编译静态库的配置wogl_lib.cfg

依赖库

官方提供的静态库模式是Release,如果你使用的是Debug模式,将可能用到的所有依赖库重新编译

HUDExample

打开官方示例程序DrawingIntegration中的HUDExample界面

HUDExample

选择目标平台wogl_lib.cfg,生成代码,编译代码

HUDExample libs

HUDExample_wogl.lib就是我们需要的

集成

接下来操作在Qt Creator中进行。

在pro文件中添加需要的头文件和依赖库。

在QOpenGL的初始化函数initializeGL中添加UserIntegration的初始化操作

在QOpenGL迭代绘图函数paintGL中添加VAPS XT迭代操作

编译运行

运行结果

会发现,QOpenGL窗口显示了,但是多出了一个窗口,这个窗口中显示了HUDExample中的内容。

进阶

首先可以确定这个流程是没有问题的,这个操作也没有问题。

那么问题在哪?

VAPS XT提供了Port层,用于移植VAPS XT程序到其他平台,那么这部分代码中势必会有窗口相关操作,可能是glut。

本办法我们将内部的窗口操作移除,并提取出内容相关的OpenGL操作放入QOpenGL中,这样就可以了。

当然,现在我水平不够,先占位,以后再说

这就是 书到用时方恨少 现实版

错误

LNK2038 _ITERATOR_DEBUG_LEVEL的不匹配项:值“0”不匹配值“2”(***.obj)中

编译Qt工程时,编译器报错LNK2038 _ITERATOR_DEBUG_LEVEL的不匹配项:值“0”不匹配值“2”(***.obj)中

原因

  • 0不匹配2,Debug模式下使用了Release库文件
  • 2不匹配0,Release模式下使用了Debug库文件

解决

在VS工程项目->属性->属性配置->C/C+±>预处理器->预处理定义->添加"_ITERATOR_DEBUG_LEVEL=2"(根据需要添加)

但是VAPS XT是以命令行的模式调用VS的编译器编译代码的,所以我们要将设置写入*.cfg配置文件中。

找到当前使用的配置文件wogl_lib.cfg,找到COMMON_COPTIONS项,在后面添加/D"_ITERATOR_DEBUG_LEVEL=2"

_iterator_debug_level >1 is not supported in release mode

紧接着上一个问题,编译时报错_iterator_debug_level >1 is not supported in release mode

原因

我们把_ITERATOR_DEBUG_LEVEL值修改为DEBUG模式的值,但是提示当前为Release模式

解决

将命令行编译参数修改为DEBUG模式

在COMMON_COPTIONS选项后面继续添加/Zi /DEBUG /D"_DEBUG"

  • /DEBUG只是是否要生成调试信息的开关。这个命令行选项在链接器页面那里
  • /Zi只是生成的调试信息的格式,这个格式是.pdb文件。当然还有好几种格式。这个命令行在编译页那里
  • /D"_DEBUG"使用DEBUG模式

VAPS XT开发入门教程53:Qt与VAPS XT程序集成
https://feater.top/vapsxt/qt-build-in-with-vapsxt
作者
JackeyLea
发布于
2022年8月27日
许可协议