导航:[首页]->[lua]->[自行编译Lua注意事项]

以下在Windows完成,Lua版本是http://www.lua.org/ftp/lua-5.1.5.tar.gz%E2%80%9D

  1. lua文件必须是gb2312,若是utf8,中文会乱码
  2. lua.c、luac.c、print.c 在编译静态库/动态库时,务必排除,否则有异常
  3. 为了编译成DLL,需要加入宏“LUA_BUILD_AS_DLL”

Lua本身完成功能有限,所有需要借助于其他的插件,为了避免插件混在一起导致无法管理,可以使用Lua语法:

例如:将自定义包路径加入package的搜索路径中。也可以加到环境变量LUA_PATH中 local p = "./wx/" package.cpath = package.cpath..";"..p.."\?.dll" local p = "./alien/" package.cpath = package.cpath..";"..p.."\?.dll"

若这个插件还依赖于其他动态库(比如wx就依赖于一堆DLL,这些DLL并非lua 插件),用上面的办法就会导致无法加载dll,云风找到了一个解决之道,这需要修改Lua源码。见http://blog.codingnow.com/2006/12/loadlibrary_search_order.html

    解决这个问题的最佳方案是修改 lua 的源码,把 loadlib.c 中第 128 行的
    HINSTANCE lib = LoadLibrary(path);
    改成 LoadLibraryEx 即可:
    HINSTANCE lib = LoadLibraryEx(path,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);