作者:赖-哥_528 | 来源:互联网 | 2024-11-05 11:58
本文介绍了如何在Lua中调用C语言编译的动态链接库。通过详细步骤和示例代码,帮助开发者理解和掌握这一技术。参考了《Lua编程入门》一书中的相关内容,并结合实际操作经验,提供了更加清晰和实用的指导。此外,还探讨了在不同操作系统下编译和链接Lua的方法,为跨平台开发提供了有价值的参考。
看云上的《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”