分类:

插件

QtCipherSqlitePlugin 最近升级到 1.0 版。这是一个比较大的升级,增加了一些新功能。感兴趣的童鞋可以升级试用下。 与之前的版本一样,QtCipherSqlitePlugin 还是基于 wxSQLite3 提供的 sqlite3secure 这个库。1.0 版的 QtCipherSqlitePlugin 插件将依赖的 wxSQLite3 升级到 4.0.4,sqlite 的版本 ...

19 评论 3 次阅读

Qt 4 插件开发(5)

by 豆子

Qt 插件系统所应当解决的最大的一个问题就是交互:包括主程序与插件的交互以及插件与主程序的交互。另外还有一个情况是插件之间的交互,这种情况比较罕见——我们一般不会将插件依赖于其它插件之上(因为我们不能确定这个插件存不存在),除非是非常重大的插件才支持自己的插件,并且这种情况十分类似主程序与插件之间的交互,只要把支持插件的插件理解为主程序就好了。

6 评论 4 次阅读

Qt 4 插件开发(4)

by 豆子

前面我们已经完成了一个插件 Troll,也已经将文件位置放到了合适的位置(通过 .pro 文件的配置)。现在,我们将来完善下main()函数,让我们的小游戏(姑且这么认为吧)能够加载插件。 下面就是完整的main()函数代码:

6 评论 3 次阅读

Qt 4 插件开发(2)

by 豆子

插件系统分成两个主要部分:插件加载器和插件。为简单起见,我们将整个应用程序设计为一个插件加载器。下面,我们将给出一个实例,来阐述如何在 Qt 4 中开发应用程序插件。 我们的例子很简单:这是一个类似游戏的系统,由插件提供游戏中出现的各种怪物(类似于我们前面设计插件框架时所提供的程序)。游戏启动时,将这些插件加载到系统中,并与主程序进行交互。我们将从最简单的情形开始着手,一步步丰富我们的游戏示例。

0 个评论 2 次阅读

Qt 4 插件开发(1)

by 豆子

关于插件的概念这里就不再赘述,大家应该对此心知肚明——即便说不出准确的概念,也会知道这个词到底是什么意思。 Qt 插件由共享库(Unix/Linux 上的 .so 以及 Windows 上的 .dll)实现。简单来说,一切关于共享库的知识,在 Qt 插件上同样适用。Qt 插件根本上说就是符合某些规定的共享库。从另外一方面说,插件架构是不同于普通的链接的。我们可以将插件理解成一种动态链接技术,而非插 ...

0 个评论 2 次阅读

源代码概览 好了,这是我们本系列的最后一篇(希望你不会感到厌烦——不过,这也是最后一次会让你感到厌烦的机会了 ;-P)。现在,让我们亮出我们的源代码。浏览源代码相当复杂,我们也是能给出一些简单代码片段的解释。通过前面的章节可以看出,我们实际已经耗费的大量精力在组织源代码结构上,试图让我们的代码更易于重用。我们将源代码依据其功能分为多个库,这些库又会依赖于其他的库。我们有一个核心库,两个游戏相关库以 ...

5 评论 1 次阅读

开始游戏! 到了玩游戏的时候啦!现在我将告诉你如何来玩这个游戏。你可以在此了解到PluginManager如何初始化、怪物怎样被创建、战斗如何开始等。我们从main() 开始。 下面是main() 函数的代码。直接跳过所有的#include 语句,集中精力看看DummyInvokeService() 函数。这个函数作为由插件接收的 PF_Platf ...

0 个评论 1 次阅读

静态 C++ 插件 下面的代码用于初始化静态插件。这依然是一个 C++ 插件,但是其初始化工作迥然不同。所有的动态插件(C 和 C++ 的)必须 实现我们定义的入口点函数 PF_initPlugin。这是PluginManager初始化插件所需要寻找的。但是,静态插件会静态链接到应用程序。这意味着,如果两个函数使用了相同的函数名,就会发生名字冲突,应用程序会链接失败。所以,静态插件必须有 ...

0 个评论 2 次阅读

现在,让我们来把前面章节中缺失的部分补上。在我们这部分内容的最后,我们会得到一个完整的代码。 怪物插件 基于前面我们介绍的插件框架,我故意创建了四种不同类型的插件: 纯 C++ 插件 纯 C 插件 部署为动态/共享库的混合插件 应当直接链接到可执行文件中的 C++ 静态插件 所有这些插件都会将其怪物对象作为 actor 注册到PluginManager。另外,游戏本身提供了Hero 类, ...

0 个评论 2 次阅读

关于我

devbean

devbean

豆子,生于山东,定居南京。毕业于山东大学软件工程专业。软件工程师,主要关注于 Qt、Angular 等界面技术。

主题 Salodad 由 PenciDesign 提供 | 静态文件存储由又拍云存储提供 | 苏ICP备13027999号-2