如何升级现有应用中使用的Lua与IUP依赖库?
Windows 64位环境下Lua+IUP旧应用升级指引
1. 二进制文件选择规则
要实现用户免安装直接运行,全程选择静态编译版的预编译二进制即可,避免依赖系统自带的运行库或其他组件:
- Lua版本优先选Lua 5.4.x稳定版的Win64静态预编译包,选择带
_static标识的发行版本 - IUP版本选3.x系列最新稳定版的Win64预编译包,必须匹配你选择的Lua版本的
iuplua绑定包,同时要包含IUP核心库、以及依赖的CD、IM库的静态编译版本 - 解释器直接选用对应版本的静态编译版
iuplua.exe,不要选择需要额外加载动态绑定库的版本
2. 二进制文件存放路径
全程按绿色便携规则存放,不需要修改系统环境变量或写入系统目录:
- 应用根目录直接放主解释器
iuplua.exe,可重命名为你的应用名比如CityBinder.exe - 所有依赖的
.dll文件全部放在根目录,不要拆分到子目录 - 业务Lua脚本可以放在根目录或单独的
script子目录,只要在入口脚本里写对相对路径即可 - 如果你需要重新编译
citybinder.c,下载的开发头文件放在单独的include目录,静态库文件放在lib目录,对应修改Makefile里的头文件、库文件搜索路径即可,你提到的.c文件引用的缺失头文件,就是Lua和IUP的开发头文件,新版本开发包内都会提供。
3. 代码适配修改要求
大部分场景下不需要大规模重构,重点检查以下几个适配点即可:
- Lua版本兼容:Lua 5.1到5.4有少量API和语法废弃,比如
setfenv/getfenv在5.2及以上版本被移除,如果旧代码用到这两个接口,要么改成用_ENV实现,要么先封装一层兼容函数 - IUP版本兼容:IUP 2.5.1到3.x的核心API 90%以上向下兼容,只有极少数冷门控件、属性被废弃,回调参数有小范围调整,对照版本变更说明检查修改即可,改造成本很低
- C扩展适配:
citybinder.c是基于旧版Lua开发的C扩展,升级后需要对照新版Lua头文件调整API调用,比如栈操作函数、模块注册方法,修改完成后用新版的Lua和IUP静态库重新编译即可 - 路径适配:旧代码如果有硬编码的模块加载路径、资源文件路径,全部改成相对路径,确保打包后在任意目录都能正常运行
测试建议:打包完成后可以在没有安装Lua、IUP的干净Windows环境下试运行,确认没有依赖缺失报错即可发布。
内容的提问来源于stack exchange,提问作者Tailcoat
相关产品推荐
相关产品推荐

