`
hemowolf
  • 浏览: 154333 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android嵌入lua

阅读更多

java嵌入lua有多种方案可选择,比如纯java的luaj 、纯C jni的 luajava还有个lua4j。在android中嵌入lua,我偏向使用luajava(当然面对除arm外的平台如x86、mips或需单独打包).

要使用luajava除了要下载luajava还要下载lua源码,需要注意的是luajava并不支持lua2.0以上的版本,我测试支持的版本是5.1.4,而且luajava中缺少头文件luajava.h(本文末提供该文件下载)。下载完后把lua和luajava的luajava.c和luajava.h解压到同一个文件夹,注意:把llex.c源文件的trydecpoint函数中的

 

ls->decpoint = (cv ? cv->decimal_point[0] : '.');

改为

ls->decpoint =  '.';

不然编译不过。  


实际项目中嵌入lua可能我们并不乐意让人轻易知道我们使用了lua。这就要编译so时不输出lua中的api和luajava的Java_org_keplerproject_luajava_LuaState_XXX函数。
关闭lua的api输出,可以在luaconf.h头文件中找到LUA_API宏
#define LUA_API        extern
 将它改为
#define LUA_API        extern __attribute__((visibility("hidden")))
  而要关闭luajava中输出函数,则需要把luajava中JNIEXPORT标识的函数去除JNIEXPORT,和在JNI_OnLoad中注册所有Java_org_keplerproject_luajava_LuaState_XXX函数(这种函数命名实在是丑陋!)。以下是我整理出来的函数(其中注释掉的函数是luajava中的作者并没有实现的).
static JNINativeMethod METHOD_LUASTATE[]={
	{"_open", "()Lorg/keplerproject/luajava/CPtr;", (void *)Java_org_keplerproject_luajava_LuaState__1open},
	{"_close", "(Lorg/keplerproject/luajava/CPtr;)V", (void *)Java_org_keplerproject_luajava_LuaState__1close},
	{"_newthread", "(Lorg/keplerproject/luajava/CPtr;)Lorg/keplerproject/luajava/CPtr;", (void *)Java_org_keplerproject_luajava_LuaState__1newthread},
	{"_getTop","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1getTop},
	{"_setTop","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1setTop},

	{"_pushValue","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushValue},
	{"_remove","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1remove},
	{"_insert","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1insert},
	{"_replace","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1replace},
	{"_checkStack","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1checkStack},

	{"_xmove","(Lorg/keplerproject/luajava/CPtr;Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1xmove},
	{"_isNumber","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNumber},
	{"_isString","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isString},
	{"_isCFunction","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isCFunction},
	{"_isUserdata","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isUserdata},
	{"_type","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1type},

	{"_typeName","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1typeName},
	{"_equal","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1equal},
	{"_rawequal","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1rawequal},
	{"_lessthan","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1lessthan},
	{"_toNumber","(Lorg/keplerproject/luajava/CPtr;I)D",(void*)Java_org_keplerproject_luajava_LuaState__1toNumber},
	{"_toInteger","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1toInteger},

	{"_toBoolean","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1toBoolean},
	{"_toString","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1toString},
	{"_objlen","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1objlen},
	{"_toThread","(Lorg/keplerproject/luajava/CPtr;I)Lorg/keplerproject/luajava/CPtr;",(void*)Java_org_keplerproject_luajava_LuaState__1toThread},
	{"_pushNil","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushNil},
	{"_pushNumber","(Lorg/keplerproject/luajava/CPtr;D)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushNumber},

//	{"_pushInteger","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushInteger},
	{"_pushString","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushString__Lorg_keplerproject_luajava_CPtr_2Ljava_lang_String_2},
	{"_pushString","(Lorg/keplerproject/luajava/CPtr;[BI)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushString__Lorg_keplerproject_luajava_CPtr_2_3BI},
	{"_pushBoolean","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushBoolean},
	{"_getTable","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1getTable},
	{"_getField","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1getField},

	{"_rawGet","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawGet},
	{"_rawGetI","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawGetI},
	{"_createTable","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1createTable},
	{"_getMetaTable","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1getMetaTable},
	{"_getFEnv","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1getFEnv},
	{"_setTable","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1setTable},

	{"_setField","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1setField},
	{"_rawSet","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawSet},
	{"_rawSetI","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawSetI},
	{"_setMetaTable","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1setMetaTable},
	{"_setFEnv","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1setFEnv},
	{"_call","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1call},

	{"_pcall","(Lorg/keplerproject/luajava/CPtr;III)I",(void*)Java_org_keplerproject_luajava_LuaState__1pcall},
	{"_yield","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1yield},
	{"_resume","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1resume},
	{"_status","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1status},
	{"_gc","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1gc},
	{"_error","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1error},

	{"_next","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1next},
	{"_concat","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1concat},
	{"_pop","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pop},
	{"_newTable","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1newTable},
	{"_strlen","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1strlen},
	{"_isFunction","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isFunction},

	{"_isTable","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isTable},
	{"_isNil","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNil},
	{"_isBoolean","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isBoolean},
//	{"_isThread","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isThread},
	{"_isNone","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNone},
	{"_isNoneOrNil","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNoneOrNil},

	{"_setGlobal","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1setGlobal},
	{"_getGlobal","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1getGlobal},
	{"_getGcCount","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1getGcCount},
	{"_LdoFile","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LdoFile},
	{"_LdoString","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LdoString},
	{"_LgetMetaField","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LgetMetaField},

	{"_LcallMeta","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LcallMeta},
	{"_Ltyperror","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1Ltyperror},
	{"_LargError","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LargError},
	{"_LcheckString","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckString},
	{"_LoptString","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1LoptString},
	{"_LcheckNumber","(Lorg/keplerproject/luajava/CPtr;I)D",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckNumber},

	{"_LoptNumber","(Lorg/keplerproject/luajava/CPtr;ID)D",(void*)Java_org_keplerproject_luajava_LuaState__1LoptNumber},
	{"_LcheckInteger","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckInteger},
	{"_LoptInteger","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1LoptInteger},
	{"_LcheckStack","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckStack},
	{"_LcheckType","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckType},
	{"_LcheckAny","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckAny},

	{"_LnewMetatable","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LnewMetatable},
	{"_LgetMetatable","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1LgetMetatable},
	{"_Lwhere","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1Lwhere},
	{"_Lref","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1Lref},
	{"_LunRef","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1LunRef},
	{"_LgetN","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1LgetN},

	{"_LsetN","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1LsetN},
	{"_LloadFile","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LloadFile},
	{"_LloadBuffer","(Lorg/keplerproject/luajava/CPtr;[BJLjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LloadBuffer},
	{"_LloadString","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LloadString},
	{"_Lgsub","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1Lgsub},
	{"_LfindTable","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1LfindTable},

	{"_openBase","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openBase},
	{"_openTable","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openTable},
	{"_openIo","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openIo},
	{"_openOs","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openOs},
	{"_openString","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openString},
	{"_openMath","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openMath},

	{"_openDebug","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openDebug},
	{"_openPackage","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openPackage},
	{"_openLibs","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openLibs},
	{"luajava_open","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState_luajava_1open},
	{"_getObjectFromUserdata","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/Object;",(void*)Java_org_keplerproject_luajava_LuaState__1getObjectFromUserdata},
	{"_isObject","(Lorg/keplerproject/luajava/CPtr;I)Z",(void*)Java_org_keplerproject_luajava_LuaState__1isObject},

	{"_pushJavaObject","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/Object;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushJavaObject},
	{"_pushJavaFunction","(Lorg/keplerproject/luajava/CPtr;Lorg/keplerproject/luajava/JavaFunction;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushJavaFunction},
	{"_isJavaFunction","(Lorg/keplerproject/luajava/CPtr;I)Z",(void*)Java_org_keplerproject_luajava_LuaState__1isJavaFunction}
};
 
OK!最后将org.keplerproject.luajava包名和类名也一同改改(当然如果 改 了也要注意修改so中的函数签名),再给so取个其他的什么名字^_^。希望本文对您有所帮助。
分享到:
评论

相关推荐

    Android-使用lua语言开发Android应用

    其主要设计目标是提供一个易嵌入、易扩展的脚本解决方案,这使得它成为在Android应用中嵌入脚本逻辑的理想选择。通过在Android应用中集成Lua,开发者可以快速地编写游戏逻辑、动态UI更新或其他业务逻辑,而无需频繁...

    AndroidLua-master

    《AndroidLua:在Android平台上的Lua编程实践》 在移动应用开发领域,Android以其开源、灵活的特性吸引了众多开发者。为了提升开发效率和降低复杂度,很多开发者选择使用脚本语言进行开发,其中Lua尤为突出。...

    mlua:为 iphone wp8 android 嵌入 lua 5.1

    在移动设备上,尤其是 iPhone、Windows Phone 8(WP8)以及 Android 平台,为了实现动态脚本功能,开发者常会将 Lua 引擎嵌入到应用程序中。"穆鲁阿"(mlua)项目正是这样一个专为这些平台设计的 Lua 5.1 实现。 1....

    lua与Android交互,基本实现

    在Android开发中,有时我们需要使用脚本语言来增强应用的灵活性和可扩展性,而Lua就是这样一种轻量级、高效且易于学习的脚本语言。本文将深入探讨如何在Android应用中集成Lua,并实现Android与Lua之间的交互。 一、...

    Android与Lua互调的全注释简易Demo

    在Android平台上,有时候为了实现...通过 Luaj 库,我们可以轻松地在Android应用中嵌入Lua脚本,实现动态逻辑处理,降低开发复杂度。记住,安全总是首要考虑的因素,因此确保在允许Lua代码执行时采取适当的防护措施。

    android ndk lua5.1.5 (加入了lua_cjson)

    在移动应用开发领域,尤其是游戏开发中,Lua语言因其轻量级、高效、易嵌入的特性,常被用于编写游戏逻辑和脚本。Android NDK(Native Development Kit)则允许开发者使用C++等原生代码进行Android应用的开发,提高...

    在Android的网页中嵌入Lua

    "在Android的网页中嵌入Lua"是一种常见的做法,它允许开发者利用Lua脚本语言来增强网页或Web视图的功能,使得Android应用能够更好地与用户交互,同时也能减轻服务器端的压力。 首先,我们要理解Lua。Lua是一种轻量...

    cpp-Lua533和LuaJava移植至Android的示例

    通过研究和理解这个示例项目,你可以了解到如何在Android应用中嵌入Lua,以及如何利用LuaJava实现Java与Lua的互操作。这样的技术可以用于游戏开发、自动化测试、动态配置等方面,极大地提升应用的可扩展性和可维护性...

    Lua51Lib.zip

    6. **调用API**:通过Lua的API在你的C/C++代码中嵌入和执行Lua脚本。 这个压缩包对于需要在Windows上集成Lua5.1的开发者来说是一个宝贵的资源,它简化了库的构建过程,确保了与VS2015的兼容性。在实际开发中,你...

    LibGDX Lua Tutorial工程

    在LibGDX中,可以通过使用第三方库如 Corona 或 LuaJ 来嵌入Lua。Lua的使用可以提高游戏逻辑的编写速度,降低维护成本,同时让非程序员也能参与到游戏内容的制作中。 4. **Lua与LibGDX的集成**: 将Lua集成到...

    lua-5.1.5.0

    Lua编译器是用C语言实现的,因此它可以被编译并在各种操作系统上运行,包括Windows、Linux、macOS、Android、iOS等。这使得Lua成为跨平台应用的理想选择。 3. **64位编译** `lua-5.1.5.0`支持64位编译,意味着它...

    lua 源代码 添加了 cJson

    Lua以其简洁的语法、高效的执行和易于嵌入其他系统而闻名。Luaj是将Lua集成到Java环境中的桥梁,它允许开发者利用Lua的灵活性和快速原型设计能力来扩展Java应用的功能,而无需深入Java的底层细节。 cJson则是另一个...

    Cocos2d-x实战++Lua卷.pdf

    Lua是一种轻量级的脚本语言,它的设计目标是嵌入其他应用程序中,以便为这些程序提供灵活的扩展和配置能力。Lua语法简洁明了,易于学习,同时拥有强大的数据处理能力和高效的执行性能。在游戏开发领域,Lua被广泛...

    lua源代码可跨平台移植

    标题“lua源代码可跨平台移植”揭示了Lua语言的一个核心特性,即它的源代码可以在多种操作系统上编译和运行,包括但不限于Windows、Linux、Mac OS X、Android以及iOS等。这种跨平台能力使得开发者能够在不同的硬件和...

    Lua 解释器 中文书籍及IDE

    官方的Lua解释器是用C语言编写的,体积小,易于嵌入到其他项目中。它支持多种操作系统,如Windows、Linux、Mac OS等。 在中文书籍方面,寻找合适的资源对于初学者来说至关重要。"Lua解释器中文书籍"可能包括《Lua...

    cocos2d-lua 实现富文本

    Cocos2d-lua 的跨平台特性使得富文本功能可以在多个平台上运行,包括 iOS、Android、Windows 等。但需要注意的是,不同的平台可能对某些富文本特性的支持程度不同,需要在开发过程中进行适配和测试。 8. **示例...

    Cocos2d-x实战:Lua卷

    你需要掌握变量、数据类型、控制结构、函数等基础概念,以及Lua与C++的交互方式,如tolua++库的使用,以便在Cocos2d-x中嵌入Lua脚本。 3. **Cocos2d-x与Lua的集成**:学习如何配置Cocos2d-x项目以支持Lua,包括安装...

    lua 绑定c++ 详细教程!

    随着跨平台游戏开发框架Cocos2d-x的发展,Lua脚本语言因为其轻量级、易嵌入的特点而在游戏开发领域得到了广泛的应用。为了更好地利用Lua的优势同时发挥C++的强大功能,Cocos2d-x提供了Lua与C++之间的绑定技术。在...

    flutter_lua:Flutter应用程序的Lua解释器

    Flutter Lua插件 ...Android和iOS都有。 例子 检查Lua运行时版本 import 'package:flutter_lua/flutter_lua.dart' show Lua; print ( await Lua .version); 产生一个新的Lua解释器线程 import 'package:flutter_l

Global site tag (gtag.js) - Google Analytics