想在windows下用go调lua脚本,开发工具用的liteide,在windows下已经安装了lua5.1.4和go,初步打算使用github上大神们封装的glua库(aarzilli/golua · GitHub),那么问题来了,在linux下这个库编译使用都可以,但是放到windows下却怎么也编译不过去,费劲了九牛二虎之力,安装了mingw64和tdm-gcc-64,编译的时候死活找不到lua库,报错:# pkg-config --cflags lua pkg-config: exit status 3221225785,自己研究了一下windows下go调c动态库,已经可以实现(http://my.oschina.net/ifraincoat/blog/593612),但是用go调用windows下lua安装包中的lua5.1.dll和lua51.dll报错这是无效的win32库,听别人说用vs调用lua库非常方便,但是vs不支持开发go的吧,而且我觉得lua和c的关系这么近,在linux下lua和c可以交互的如鱼得水,在windows下应该也有办法实现才对,我的思路是先解决windows下c调lua的问题这样应该就能让go调lua成功,还请大神们指点指点,有谁调过的吗?或者直接在windows用go调lua可以实现则更好
windows安装luajit及golua
《mingw》
wgethttp://luajit.org/download/LuaJIT-2.0.4.tar.gz
tarzxfLuaJIT-2.0.4.tar.gz
mingw32-make.exe
mingw32-make.exeinstall(golua要用到pkg_config)
cpsrc/lua51.dll/c/Windows/System32/
cpsrc/luajit.exe/c/Windows/System32/
编译golua
1.lua51.dllcopy到mingw64的lib目录下
cp/c/Windows/System32/lua51.dll/d/Program\Files/mingw-w64/mingw-w64/x86_64-4.9.2-posix-seh-rt_v3-rev1/mingw64/lib/
2.下载golua
goget-u-dgithub.com/aarzilli/golua/lua
3.修改lua.go
/
#cgopkg-config:lua5.1
#cgoCFLAGS:-Ilua
#cgolluaLDFLAGS:-llua
#cgoluaaLDFLAGS:-llua-lm-ldl
#cgolinux,!llua,!luaaLDFLAGS:-llua5.1
#cgodarwin,!luaapkg-config:lua5.1
#cgofreebsd,!luaaLDFLAGS:-llua-5.1
#include<lua.h>
#include<stdlib.h>
#include"golua.h"
/
修改为:
/
#cgoCFLAGS:-Iluajit-2.0
#cgoLDFLAGS:-L./-llua51
#include<lua.h>
#include<stdlib.h>
#include"golua.h"
/
4.copyinclude目录
cd$GOPATH/src/github.com/aarzilli/golua/lua/
cp-r/usr/local/include/luajit-2.0./
5.编译安装
gobuild
goinstall
测试:
go调用lua脚本
使用cgo调用共享库,在win平台上需要在源码中修改编译参数,见上面的回复,就是以#cgo打头的那几行。golua库配合luar库非常好用,嵌入脚本非常简单。
另外,有纯golang实现的lua虚拟机,见<arel="nofollow">https://github.com/layeh/gopher-luar,这个在哪个平台下使用都没问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。