如何将lua编译成动态库

今天想把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就是这样修改的)

   http://stackoverflow.com/questions/12299659/compiling-lua-lib-for-android-success-but-strange-segfaults


你可能感兴趣的:(游戏引擎)