golang通过cgo调用lua
1.前期准备
1.第三方库:https://github.com/aarzilli/golua
2.下载lua源码:https://www.lua.org/ftp/lua-5.1.4.tar.gz
3.编译lua:
在windows下使用“mingw32-make.exe mingw test”
在Linux下使用“make linux test”
将得到的liblua.a放到github.com\aarzilli\golua\lua\lua下面
4.并且修改golua.go和lua.go,将库路径改好即可
#cgo CFLAGS: -I ./lua
#cgo windows,!llua,!luajit LDFLAGS: -L./lua -llua -lmingwex -lmingw32
2.测试go代码
package main
import (
"github.com/aarzilli/golua/lua"
)
func main() {
L := lua.NewState()
L.OpenLibs()
defer L.Close()
L.DoString("print('sdfsasfd')")
}
3.完成的一个学习项目
锻炼自己对go、lua、c的理解,特意做了一个项目【点击跳转】。使用go编译lua脚本为字节码,通过网络传给c,通过c执行lua脚本。 本项目包含go - lua - c之间相互调用的方法,值得学习。
4.总结
lua的源码可以编译到很多平台,我这里只测试了windows和Linux两种。更多的用法,可以参考c语言调用lua,因为go调lua也是用的cgo通过c调用lua额。