- 参考地址
看云上的《Lua编程入门》,比《Lua程序设计(第2版)中文》好多了 https://www.kancloud.cn/thinkphp/lua-guide/43809 SF上的编译Lua源码 https://segmentfault.com/a/1190000004904799
源码下载地址
http://www.lua.org/ftp/lua-5.3.4.tar.gz
SF的编译脚本挺酷的,脚本写好,确实省很多事。
上边基本把需要的知识点都讲通了,我讲一下遇到的问题,及处理
- 看云上的这里是错误的,或者是旧版本的语法
> require "WinFeature" > for k, v in pairs(WinFeature) do >> print(k, v) >> end ShowMsgBox functon:0028AB90 >
需要改成
dlltest = require "WinFeature" for k, v in pairs(dlltest) do print(k, v) end dlltest.ShowMsgBox()
2. 这段代码需要用新版本的函数
extern "C" __declspec(dllexport) int luaopen_WinFeature(lua_State* luaEnv) { const char* const LIBRARY_NAME = "WinFeature"; luaL_register(luaEnv, LIBRARY_NAME, luaLibs); return 1; }
修改成
extern "C" __declspec(dllexport) int luaopen_WinFeature(lua_State* luaEnv) { const char* const LIBRARY_NAME = "WinFeature"; luaL_newlib(luaEnv, luaLibs); return 1; }
3. 必须使用配套的 lua.dll lua.exe lua.lib
一开始使用别人编译的Lua.exe,跑Dll,会报错:“multiple Lua VMs detected”
- 最后贴上运行的截图