用NDK编译lua库

Android.mk是这样的

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := lua
LOCAL_SRC_FILES := lua.cpp

MY_FILES := $(wildcard $(LOCAL_PATH)/lua/*.c)
MY_FILES := $(MY_FILES:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES += $(MY_FILES)

# includes
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/lua/

include $(BUILD_SHARED_LIBRARY)

lua的源码放在jni/lua目录下,删除lua.c和luac.c

执行ndk-build,会报错:

llex.c:237:18: error: ‘struct lconv‘ has no member named ‘decimal_point‘

查了下,是定义小数点字符的,把这段注释掉,直接定义算了:

// #if !defined(l_getlocaledecpoint)
// #define l_getlocaledecpoint()     (localeconv()->decimal_point[0])
// #endif

#define l_getlocaledecpoint() ‘.‘

还有个liolib.c也改下,这样就编译成功了。

我用的是lua5.3。

等会学习下lua

时间: 2024-12-20 18:54:42

用NDK编译lua库的相关文章

cocos2dx通过ndk编译c++库

ndk编译c++库,然后通过jni调用实现重要代码封装,是安卓应用中最常用的技术,一方面可以将重要的代码实现隐藏,防止泄漏,也可以提高打包速度. ndk里面的sample文件夹中有很多实用的例子,其中hello-jni有一个编译c++的例子. 首先,创建一个jn文件夹,文件夹内放置Android.mk和Application.mk两个文件,Android.mk文件主要是 写入编译的c++代码,打包的库名,打包的库类型(静态库or动态库),引用的模块等等.Application.mk 是主要表示打

VC++编译lua库 无法解析lua符号问题

VC编译lua库 出现错误: 错误 36 error LNK1120: 21 个无法解析的外部命令 C:\Users\luozhuang\Desktop\onscripter-20120416VC\Release\onscripter.exe onscripter 错误 19 error LNK2019: 无法解析的外部符号 "char const * __cdecl lua_tolstring(struct lua_State *,int,unsigned int *)" ([ema

解决ndk编译lua时遇到 undefined reference to '__srget'的问题

今天用ndk r10d版本编译lua时,遇到几个错误,提示没有找到__srget 没有定义,于是看了国外的大神的解决方法, 是因为ndk在r10c之后的版本已经将getc函数屏蔽了,所以导致编译器找不到,只能用比较就得ndk去编译,笔者用 ndk r10b成功编译.附上r10b的下载地址:http://pan.baidu.com/s/1boUO775 转载请注明出处, from 博客园HemJohn 解决ndk编译lua时遇到 undefined reference to '__srget'的问

[lua]安卓ndk如何编译lua库

这里说的lua库是标准lua库,不包含tolua,不包含cocos2dx的各种lua扩展,是干净的lua. 参考: http://stackoverflow.com/questions/12299659/compiling-lua-lib-for-android-success-but-strange-segfaults 将文件夹放到项目中,去掉main文件. luaconfig.h中找到 lua_getlocaledecpoint 的定义,将它改成 ('.') 编译通过. 为什么要这么改呢?因

ndk 编译 boost 库

Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C++社区中影响甚大,是不折不扣的“准”标准库.Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关.大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库.但Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎. 在Android的

NDK 编译 boost库

从 GITHUB 上拉别人一个boost工程 https://github.com/moritz-wundke/Boost-for-Android 编译需要MinGW(Min GNU for Window)下载了MinGW 下载器 http://www.mingw.org/wiki/MSYS然后将bin路径加入到path环境变量中C:\MinGW\msys\1.0\bin 执行boost 编译 build-android.bat G:\androidndkr9 Detected Android

linux下编译lua库

编辑MakeFile INSTALL_TOP= /usr/local修改为目标install位置 执行 make linux make install 如果提示依赖libreadline  可以直接apt-get install libreadline-dev

[转]NDK编译库运行时报dlopen failed: cannot locate symbol "__exidx_end" 解决办法

原文链接:http://blog.csdn.net/acm2008/article/details/41040015 当用NDK编译的库在运行加载时报如下错: dlopen("/data/data/xxx.xxx.xxx/lib/libxxx.so") failed: dlopen failed: cannot locate symbol "__exidx_end" referenced by "libxxx.so"... 解决办法如下: 在你报

NDK编译库运行时报dlopen failed: cannot locate symbol "__exidx_end" 解决办法

当用NDK编译的库在运行加载时报如下错: dlopen("/data/data/xxx.xxx.xxx/lib/libxxx.so") failed: dlopen failed: cannot locate symbol "__exidx_end" referenced by "libxxx.so"... 解决办法如下: 在你报错的库libxxx.so的编译脚本Android.mk请加上:LOCAL_LDFLAGS += -fuse-ld=bf