今天想把lua编译成动态库,感谢google,总算成功了,简要记录如下:
一、如何将lua编译成动态库,可以参考下面两篇博客:
http://guiquanz.github.io/2012/08/02/lua_improvements/
http://blog.163.com/madahah@126/blog/static/17049922520112692322608
二、如果想用ndk编译lua,有以下注意事项
1、新建jni文件夹,将lua源码拷贝到jni文件夹下。要使用 NDK 自带的 Android.mk,必须叫做这个名字,否则 make 的时候会找不到文件,错误提示可能类似下面::
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
2、对应的Android.mk内容如下(以5.2为例):
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := lua
LOCAL_SRC_FILES := lapi.c \
lauxlib.c \
lbaselib.c \
lcode.c \
ldblib.c \
ldebug.c \
ldo.c \
ldump.c \
lfunc.c \
lgc.c \
linit.c \
liolib.c \
llex.c \
lmathlib.c \
lmem.c \
loadlib.c \
lobject.c \
lopcodes.c \
loslib.c \
lparser.c \
lstate.c \
lstring.c \
lstrlib.c \
ltable.c \
ltablib.c \
ltm.c \
lundump.c \
lvm.c \
lzio.c \
lctype.c \
lbitlib.c \
lcorolib.c
include $(BUILD_SHARED_LIBRARY)
3、编译llex.c时,有如下错误:
D:/SoftWare/lua-5.2.0/jni/llex.c: In function 'trydecpoint':
D:/SoftWare/lua-5.2.0/jni/llex.c:214:18: error: 'struct lconv' has no member named 'decimal_point'
在stackoverflow论坛上找到一个帖子,按照里面的方法即可解决(cocos2dx就是这样修改的)