Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected

首先说一下5.3貌似没有这个问题, 但是目前最新版的luasocket 3.0 rc1只能支持5.2, 5.3调用的话程序会崩溃(不知道是不是我没配置好)


出现这个问题的原因, 想必网上有很多资料了, 就是C model的静态和动态链接的问题, lua5.2不支持 >= 2的静态链接, 而如果在编译得到lua.lib的时候用了静态链接, 

编译得到socket.dll 和 mime.dll的时候链接了它, 那么在命令行解释的时候, 相当于链接了两次, 就会出现这样的错误.


很可惜, 现在网上大多数是linux下的解决方案, 好不容易遇到一两个windows下的又不知所云, 于是我自己摸索出了一套方案, 编译工作交给了VS2012.


一. 得到lua.dll和lua.lib

首先新建一个vc++空项目, 将 lua/src 中除了luac.c和lua.c的.h.c文件全部导入, 项目 -> 属性设置 将配置类型改为dll, 并且在C/C++ -> 预处理器中加上

_CRT_SECURE_NO_WARNINGS
LUA_BUILD_AS_DLL

这两项.

然后重新生成项目就可以得到dll和lib了.

二. 得到解释器

将项目内的文件全部移去, 将lua.c加入, 然后在链接器中设置相关内容, 使得项目能够链接到刚才生成的lib.
然后将配置类型改回exe, 生成项目得到解释器文件lua.exe.

有需要的话可以移除lua.c, 加入luac.c得到编译器.

将lua.exe 和 lua.dll放在同一文件下就可以使用了.

三. 编译luasocket相关项目

将luasocket
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值