VAPS XT入门26:加载VAPS XT CodedObject DLL
系列索引:VAPS XT入门系列索引
本文介绍VAPS XT工程加载VAPS XT编译生成的动态链接库,动态链接库的功能比较简单,使用OpenGL绘制一个彩色三角形,VAPS XT可以加载此dll并显示(OpenGL的开发不在此文中,具体见OpenGL开发入门系列教程索引)。
首先创建一个根工程(root project/vrpj),本文工程名为Triangle。
空白工程为:
空白类
先创建一个用于生成dll的类。新建类:
创建完成后会出现属性设置界面:
设置Affects Drawing值为ExtentAndDraw。
然后生成VS2013工程代码(默认的):
生成的代码如下:
修改代码
VAPS XT类默认生成VS2013的工程,我们打开(一些头文件和库由VAPS XT自动配置生成)。
打开后如下:
因为需要使用OpenGL的函数,所以需要添加Windows Kit的include路径。
我们修改vxtClsOpenGLTriangle.cpp文件中的内容。
这里简单介绍一下几个函数:
名称 | 功能 |
---|---|
vxtClsOpenGLTriangle | 构造函数 |
vDraw | 绘图函数 |
pGetSelectedObject | 绘制的对象是否可以选择/选中 |
vCalculateExtent | 对象缩放 |
CanRotate | 对象是否可以旋转 |
vRotate | 对象旋转角度 |
包含头文件:
1 |
|
我们在vDraw()函数中添加代码:
1 |
|
代码分为两部分:
一个是VAPS XT固定的:
1 |
|
另一部分是OpenGL的标准实现:
1 |
|
有三个顶点,每个顶点对应不同颜色,不做过多介绍。
VS2013工程除了标准的Release/Debug外还包括StaticOGL等配置。
下表是对应关系。
VS类型 | VAPS XT 类型 |
---|---|
StaticOGL | wogl |
StaticOGLDebug | wogl_d |
StaticOGLDebugWithExports | wogl_multi_dll_d |
StaticOGLWithExports | wogl_multi_dll |
编译生成结果是DLL,DLL所绘制的图像是由vDraw()函数中的标准OpenGL函数绘制的。
结果为:
CodedObject是dll源码文件夹,lib文件夹是VS2013编译生成的VAPS XT需要的obj文件,temp是VS2013编译临时文件夹。
加载DLL
先新建一个Coded Implementation
设置名称,在DLL Path字段打开dll所在的文件位置。
点击Ok之后,就会在之前的class内部新建一个Imp。
如果双击打开的话什么都没有。
显示
新建一个Format
将OpenGLTriangle拖拽到Format的内部,然后就会在预览窗口立刻显示OpenGLTriangle中用OpenGL写的多色三角形。
说明
可以看到,在Windows下Qt动态加载VAPS XT编译生成的DLL文件和Linux下编译生成VAPSXT动态链接库.so文件并使用Qt动态加载中有加载DLL,此方法称为DrawingIntegration(DI)方法,本文方法称为CodedObject方法。
CodedObject方法是无法加载DI方法编译生成的DLL的,这个我是问过原厂工程师。
完整工程地址:VAPS_XT
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!