挖井

类库大魔王的挖井日记

挖一口属于自己的井


内嵌wxLua

  之前因为使用wxLua,发现如果宿主exe使用的wxWidgets动态链接库如果和wxLua使用的一样,则不能在Lua中正常加载wxLua。虽然可以通过使用不同的wxWidgets动态链接库文件来规避这个问题,但实在是很丑陋的一件事情。
  今天想起来,能不能把wxLua内嵌到宿主exe中呢,这样就都使用同一份wxWidgets了。于是看了一下wxLua的代码,代码文件组织是很清晰的,很快就明白了各个文件夹下的文件是什么作用的。使用wxLua的一种方案是,它最后需要编译生成一个叫wx.dll的文件,Lua中可以直接require这个wx模块来使用。打开它的VC工程来看,也就是那么几个文件编译出来的,直接照它的样子把这些需要的文件添加我的工程中,然后编译,看情况需要修改的有几处:因为我的工程用了WXUSINGDLL宏,但这个宏会让wxLua中的一些类变成dll linkage的,所以要把这几处编译开关修改一下;有一个for wxLua的wxApp派生类,删掉;还有一处最主要的,luaopen_wx函数,有一个wxLuaState的对象,要改成直接在创建对象时把lua_State指针传过去,其他有些分析命令行参数之类的代码也是多余的可以删掉。另外还有个问题,在VC9里cell控件的代码中有一个GetRef方法,链接时报错,很诡异,搞不明白,暂时屏蔽掉那行代码。
  经过这么一番折腾,终于可以直接在exe中用内嵌的Lua解释器使用wxLua了!

本文地址:

https://minidump.info/blog/2009/04/e5-86-85-e5-b5-8cwxlua/

感觉本文不错,不妨小额鼓励我一下!
上一篇

超级牛掰的升级程序即将现世

  发现在有很多事可以做,发现自己一件都不想做,哈哈!  今天老大跟我说,是不是忘了件事,那个gem升级也得做进升级程序中去。我说那不是说另外还要用wxRuby做个程序的嘛。老大说,这种建功立业的好机会,怎么可以让。我狂晕!  找原来开发这个功能的同事咨询了一下基本原理,发现简单得令人发指,当...…

Job 全文阅读
下一篇

原来我的id没有了

  今天用Foxmail收邮件的时候,才稍微留意了一下出错信息,原来我在学校bbs上的id已经没了,消失了,生命值减到0了!  上去试了一下小丫头的id,也没有了,离开学校的日子,终于超过1年没有记得要登录bbs。  用guest登录上去看了看,以前经常驻留的几个版面也找不到了,像People...…

Water 全文阅读