挖井

类库大魔王的挖井日记

挖一口属于自己的井


直接用LuaJIT 2.0

  昨天发现LuaJIT2.0跟某些第三方Lua库不正常使用,于是在Lua的maillist上发了个邮件问问,结果今天看到Mike Pall的回复说是IUP、IM它们的代码里插入了硬编码的已经被编译成字节码的Lua脚本,而这些脚本在IUP中处理时,没有正确处理出错的情况,于是说这个不是LuaJIT的问题,应该向IUP提交这个Bug。
  这让我比较纳闷,因为我不知道到底问题出在哪里,即使要向IUP提交bug,只说一句Mike Pall说的你们的代码有问题,LuaJIT2.0里不能require,而明明官方Lua和LuaJIT1.0是可以正常使用的,人家会睬我吗?
  今天我又发现,在require另外一个叫iupluaim的库时,LuaJIT 2.0会崩溃!于是我想我先看看是LuaJIT中的哪行代码引起的崩溃,用VC2008创建了个解决方案,添加了代码进去,编译出Debug版本的LuaJIT,重现问题,最后发现居然是lj_vm.obj里崩溃的,而这个lj_vm.obj文件是通过一个叫buildvm.exe的程序生成的,所以VC的调试器跟踪不到它的代码里面去,唉,只好放弃了,反正也不能说一定是LuaJIT的问题,或一定是IUP的问题,只有Mike Pall才知道。
  最后,我把直到昨天下午编译出来的众多第三方Lua库都用LuaJIT来require,发现2.0版本中一共有9个dll不能require,而1.0版本只有一个会崩溃。现在想想,这些2.0版本中不能require的dll都是IUP、IM和CD中的,这些库其实我暂时也用不上,IUP可以用wxLua代码,而IM和CD是跟业务基本无关的,就直接用LuaJIT 2.0就行了!

本文地址:

https://minidump.info/blog/2009/11/e7-9b-b4-e6-8e-a5-e7-94-a8luajit-2-0/

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

划分脚本插件架构的职责面临的问题

  今天整理了一下项目中使用的第三方框架、库的列表,很多,有C++的,有Lua的,突然面临一个迫切需要解决的问题:怎么决定某个功能应该由C++实现还是由Lua实现?  最早决定让项目成为一个由C++构建主体框架,由Lua脚本扩展实现其他的业务逻辑时,只是单纯得想让C++完成一部分最核心的功能。...…

Plugin Framework wxWidgets 全文阅读
下一篇

从C++传递窗口给wxLua

  描述一下问题,程序主框架是用C++实现的,GUI框架用的wxWidgets,有一部分功能通过嵌入Lua解释器调用Lua脚本完成,如果要在Lua脚本中用wxLua实现个对话框的这种情况下,需要一个父窗口,而最好的父窗口是由C++实现的,现在就需要能把C++中实现的窗口传递给Lua,并让wxL...…

CodingStudio Lua,Script wxWidgets 全文阅读