如果用户能够通过一些脚本语言来修改应用本身的行为,那么许多应用可以变得更适合用户使用。一些商业应用就提供了此类便利。例如 Microsoft Office 的 VBA 脚本编程或在视频游戏 World of Warcraft 中使用 Lua 。脚本语言把应用作为一个平台提供一系列终端用户可以获得并操控的服务。
做为嵌入到程序中的语言,我们有很多可用的选择:开源和不开源的脚本引擎,或者可以从头开始创建一个。现在,最为熟知的脚本语言是JavaScript,Lua和Python,还有很多其它的语言等等。在Microsoft Windows平台上 嵌入脚本引擎的一般方法是使用一个 包含脚本引擎动态链接库(DLL)中,然后使用一系列的函数调用访问引擎中的服务。在这篇文章里面我们将看到如何使用lua5.2脚本引擎嵌入到C++的代码中,我们的测试用例使用的开发工具是Visual Studio 2005.这开始讲解之前我们要从lua官方网站下载一些必要的组件,lua5.2中包含有已经编译好的dll以及头文件和链接用的导入库。需要说明的是当你使用lua嵌入到C++代码的时候,编译出来的可执行文件必须包含有lua的DLL即动态链接库,否则会提示运行出错,缺少必要的dll。这些例子都是用Visual Studio 2005编写,当然对于VS的后续版本是兼容的。
这篇文章向您描述了一个使用lua5.2作为脚本引擎的特定实现,在lua的官方文档(lua.org)以及一些网站中有许多关于这方面的信息,这里仅仅是为你提供一些测试例子,作为你开始lua旅程之前的引导
对于产品开发而言,开发一个完整专业应用程序跟开发单块应用程序有不同的策略和方法。譬如说:开发完整专业应用平台需要对终端用户提供大量丰富的插件工具和服务去实现他们自己特定的领域需求。插件程序的策略和方法被应用在许多的软件中,例如微软的Office,Visual Studio以及集成开发环境Eclipse,甚至是图片处理软件Adobe Photoshop. 网游魔兽世界就提供大量的add-on(插件)给用户,一些其他的游戏提供类似的工具,让玩家可以增加额外的内容从而创造一个与众不同的社区。作为商业应用程序,GenPOS,有一些特性也是极具工具集的策略的:
不管怎样,有些模块是被源代码实际控制的,这部分模块的更改需要通过开发部门的协作才能完成软件行为的改变。例如说,打印收据(一些显示内容是从参数或者助记符的输入中获取的)。简短列举这些限制可能包含:
与其试图加强和改进当前的非常简单的控制字符串功能,以提供包含额外脚本功能的销售终端,我们最终决定寻找到其它可能的方案,不需要大量开发到改进,且提供更多的产品改进能力。就像我们引入的布局管理器使客户能够设计自己的屏幕布置和工作流程一样,我们希望有一个相当灵活的机制让经销商的销售终端通过脚本为他们的客户提供增值服务。我们还打算提供足够的应用服务访问权限,让经销商和最终客户将能够修改自己的应用程序的行为。最后,我们要使用有一定程度到用户社区的语言,感兴趣到人们可以使用社区的资源。
我们已经用5.2版本的Lua脚本引擎在POS源代码上做了一些简单的实验来观察向程序中添加功能的难度。从实验结果来看,我们想通过程序服务来展现的各种功能已经是可用的了,并且可以通过对Lua脚本引擎做一些修改就可以使用起来。Lua 脚本引擎本身是由 C 语言写成的,在 C 或 C++ 中使用 Lua 脚本也相当简单。你在网上也可以找到很多集成了 Lua 5.2 脚本引擎的的程序或程序片段,并且 Lua 5.2 的程序接口和先前 Lua 版本只有在初始化和启动等接口上存在少量变化,所以旧的 Lua 程序可以不做修改或只做很小的修改就可以移植到 Lua 5.2环境下。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务