吵吵   2012-12-10  阅读:21,487

自从用vc写程序开始,程序界面就成了一个令人很头疼的问题。但是写了这么久总结出来两个思路:1、业务和交互分离。2、必须有一个渲染引擎来完成图形显示的任务。很高兴,迅雷的Bolt界面引擎做到了。它使用xml文档定义皮肤,使用lua完成界面逻辑,使用vc来进行核心业务的开发。

遗憾的可能就是没有硬件加速,基于GDI的绘图多少造成了卡顿想象的出现,但是它提供的一套动画函数,便值得我一试了。在仅有官方一点说明文档中,我们开始了在vs2010平台下使用Bolt引擎的旅程。

第一步:部署开发环境。

1、安装vs2010,这个就不在详细备注了,你懂的!不懂自己回去再学习学习。

2、安装lua,Bolt殷勤是使用lua脚本语言来进行粘合的,所以我们得先装个lua吧。从官方下载的lua包是一个tar.gz的压缩包,这个包很常见,因为在linux系统我们使用make make install就轻易的编译和安装好了。但是在windows系统中就有点麻烦。我们需要建立一个空的工程,使用vc2010来编译这些源代码。当然,你也可以选择更简单的方法,下载谷歌开源项目中的lua for windows,一键搞定,连环境变量都设置好了,就是东西有点多,如果想保持你系统的干净整洁你就自己编译出lua.exe和luac.exe吧。

3、安装和配置Notepad++。这个你可以按照官方的文档一步步来,它主要是为了制造一个调试xml和lua的类似的IDE,你可以不搞那么多,但是搞了会方便很多。我就只说下遇到的问题了。

A、插件无法下载。打开插件->plugin manager->show plugin manager一直处于downloading plugin list状态,无奈之下只好上官方下载插件,下载下来的是DLL文件,将其拷贝到Notepad++安装文件的plugin目录中去,就ok了。

B、如果你直接让lua.exe关联了环境变量的话,不用打目录了,直接lua.exe就行了。

第二步:下载和安装sdk。

下载最新的sdk解压后,里面有库文件,头文件,还有一些例子。我们需要先运行setup.js,它的作用是为新建立的vc工程添加头文件和库文件的引用,但是很遗憾,vc2010建立工程后似没有实现这个功能,但是我们仍旧需要先运行它,因为之后你发现lib文件夹原先是空的,当你运行后,它有了很多的lib文件了:
libexpat.lib
xlfsio.lib
XLGraphic.lib
XLLuaRuntime.lib
XLUE.lib

将sdk中的dll文件都拷贝到windows system32文件夹下面,这样子就能方便的运行迅雷bolt程序了。不会因为缺少dll文件而终止。

第三步,建立第一个程序HelloBolt程序

1、新建一个HelloBolt的win32 应用程序,而不是windows consol程序,因为两者的入口不同,否则会报错:

error LNK2001: unresolved external symbol _WinMain@16

建立好了win32程序后里面有一堆窗口注册类的代码,删了,从bolt sdk文件夹中找到hellobot1这个例子,把代码拷贝过来。

2、在项目属性-> vc++目录中添加bolt sdk所在目录中include和lib文件夹。否则将会出现以下错误:

fatal error C1083: 无法打开包括文件:“XLUE.h”: No such file or directory

3、在项目属性->C/C++->连接器->输入中添加库文件引用:

xlfsio.lib
XLGraphic.lib
XLLuaRuntime.lib
XLUE.lib

否则将会出现以下错误:

error LNK2019: 无法解析的外部符号 __imp__XLLRT_ErrorHandle@4,该符号在函数 “bool __cdecl InitXLUE(void)” (?InitXLUE@@YA_NXZ) 中被引用

3,在代码中添加#pragma comment(lib,”Shlwapi.lib”),或者按照上面的方法添加Shlwapi.lib,因为PathAppend及来自shlwapi否则依旧是上面的错误:

error LNK2019: 无法解析的外部符号

4,将#include string上移至顶,否则可能会出现错误:

error C2065: “wstring”: 未声明的标识符

5、建立一个XAR的文件夹,在下面以工程名命名一个文件夹,再将BoltHello1中的onload.lua和package.cfg拷贝到该文件夹下,然后将packeage中的BoltHello1改为工程名。
一定要注意的是对于bolt引擎来说,一定是建立一个工程名文件夹再拷贝XAR中的文件,否则将会出现错误如下,这个纠结了我好久啊:

“Load XAR失败!”

至此,第一个简单的基于Bolt引擎建立的程序就成功了!

我们再到sdk samples中的HelloBolt,用vc打开工程文件,等待进行转换,之后按照以上操作添加头文件和库文件引用。右击HelloBolt7选择HelloBolt7为启动工程,编译运行就得到以下窗口了:

HelloBolt

其它注意事项:bolt界面殷勤是使用宽字符的,所以可能很多字符创处理比较麻烦,但是它这样做的好处是支持多种语言,这点bolt倒是想的很远,同时lua等脚本也是用UNICODE格式保存的。

至此,我们已经能够使用Bolt界面引擎来开始我们的编程旅程了。bolt界面引擎是使用一个窗口,虚拟的多个object来渲染的。2D图形引擎中有一个脏矩形的概念DirtyRect,其实讲的就是一个局部刷新的概念。浏览器的引擎也是基于如此的,于是我们发现了一些共同点,html->xml,javascript->lua。于是乎我们有理由相信,bolt也可以做成浏览器这样子的,到时候做界面也就不是什么麻烦事情了!

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

11条回应:“在vc2010中引用Bolt界面引擎成功”

  1. 李辉博客说道:

    洫之舞博客换域名了,换成李辉博客了,http://www.lihuisem.com 欢迎常来哈,好久没写博客了,最近又开始写了。

  2. 机关文化说道:

    写得还是挺详细的。

  3. zhui说道:

    以前大学一直用 VS2010 套装。现在工作比较少了。因为语言关系,用的最多的是 MyEclipse 。欢迎回访!

  4. hostgator说道:

    好棒的内容,来支持一下

  5. 狒狒说道:

    分享的不错
    受用了

  6. 分析的很透彻,很欣赏你的看法,学习了。

  7. 绿化苗木说道:

    学习下,谢谢博主的分享

  8. 唐晔说道:

    我照着楼主大神的试了,结果出现错误1>Win32Project1.obj : error LNK2019: 无法解析的外部符号 __imp__PathAppendW@8,该符号在函数 “wchar_t const * __cdecl GetResDir(void)” (?GetResDir@@YAPB_WXZ) 中被引用1>E:Software EngineerCVS ProjectsWin32Project1DebugWin32Project1.exe : fatal error LNK1120: 1 个无法解析的外部命令请大神指教,库文件添加了的

    • 姨妈说用谷歌搜索会比较准和比较有含量说道:

      应该是有些文件没有包含进去

  9. 付博说道:

    大神,求加好友指导

发表评论

电子邮件地址不会被公开。 必填项已用*标注