高版本的ndk 编译cocos2dx ndk环境配置会导致luaengine 出问题么

cocos2d-x中luajit的使用
& &新版本的cocos2d-x使用了luajit来替代原始的lua,好处一是可以极大的提高运行速度(android下可以开jit,运行速度提高10~60倍,ios下不可以开jit,运行速度也可以提高2~3倍)。 二是luajit编译的字节码现阶段来说无法反编译,也就是说无法破解。 这里对luajit进行详细的说明。
& & & &1、基本使用。这个很简单,不用修改任何代码,与lua5.1完全兼容。 &对应的头文件和库要替换成luajit的(与lua命名相同)
& & & &2、发布时编译成字节码。
& & & & & & &这个需要luajit.exe的执行文件。 &编译方法(windows): 在(http://luajit.org/download.html)源代码,使用vs的命令行工具,执行ms.bat进行编译。 &我最开始使用cygwin直接执行make结果出了很多编译错误和诡异的问题。 &其实直接使用批处理才是正确的方式。&
& & & & & & &编译完成后,要注意luajit.exe和源代码src/jit文件夹要同时并且匹配使用。否则运行时会出现 &&unknown luaJIT command or jit.* modules not installed&的错误。
& & & & & & 编译成字节码的命令如下: luajit -b 原始文件 输出文件
& & & & & & 更多详细说明可以直接执行 luajit -b来获取。 &这里还要注意,输出文件最好保持.lua的扩展名,否则require文件的时候会提示找不到文件。除非require里面使用的完整名字。
& & & & & &我在编译字节码时还碰到了一个问题,就是无论编译什么文件都提示这个 &&luajit &'=' expected near '&eof&'& &,后来换了luajit的版本后就没有出现了。可能跟我一开始手欠改了luajit源代码有关。
& & & &3、编译luajit的静态库文件(for android)
& & & & & & 编译字节码所用的执行文件和我们开发程序时使用的静态库文件要保持版本一致。 &windows版本所需要的文件在编译执行文件时就已经生成。
& & & & & & android编译需要使用NDK在windows下进行交叉编译。 这里我一开始使用cygwin没有成功。一大堆编译错误。后来换mingw就相对顺利了。 我使用的是msys+mingw的环境(在装msysgit时附带装好的..) 编译脚本参考了cocos2d-x本身的和luajit官网的。修改如下:
SRCDIR=/c/msysgit/msysgit/LuaJit-2.0.2
DIR=/d/MyProj/develop/lib/cocos2d-x/scripting/lua/luajit
cd &$SRCDIR&
NDK=/d/adt-bundle-windows/android-ndk-r8e
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.7
NDKP=$NDKVER/prebuilt/windows/bin/arm-linux-androideabi-
NDKF=&--sysroot $NDK/platforms/android-$NDKABI/arch-arm&
#/ARM, armeabi (ARMv5TE soft-float), Android 2.2+ (Froyo)
DESTDIR=$DIR/android/armeabi
rm &$DESTDIR&/*.a
make clean
make HOST_CC=&gcc -m32& CROSS=$NDKP TARGET_SYS= TARGET_FLAGS=&$NDKF&
if [ -f $SRCDIR/src/libluajit.a ]; then
mv $SRCDIR/src/libluajit.a $DESTDIR/libluajit.a
# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
NDKARCH=&-march=armv7-a -Wl,--fix-cortex-a8&
DESTDIR=$DIR/android/armeabi-v7a
rm &$DESTDIR&/*.a
make clean
make HOST_CC=&gcc -m32& CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS=&$NDKF $NDKARCH&
if [ -f $SRCDIR/src/libluajit.a ]; then
mv $SRCDIR/src/libluajit.a $DESTDIR/libluajit.a
# Android/x86, x86 (i686 SSE3), Android 4.0+ (ICS)
DESTDIR=$DIR/android/x86
NDKVER=$NDK/toolchains/x86-4.7
NDKP=$NDKVER/prebuilt//bin/i686-linux-android-
NDKF=&--sysroot $NDK/platforms/android-$NDKABI/arch-x86&
rm &$DESTDIR&/*.a
make clean
make HOST_CC=&gcc -m32& CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS=&$NDKF&
if [ -f $SRCDIR/src/libluajit.a ]; then
mv $SRCDIR/src/libluajit.a $DESTDIR/libluajit.a
make clean
SRCDIR=/c/msysgit/msysgit/LuaJit-2.0.2
DIR=/d/MyProj/develop/lib/cocos2d-x/scripting/lua/luajit
cd &$SRCDIR&
NDK=/d/adt-bundle-windows/android-ndk-r8e
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.7
NDKP=$NDKVER/prebuilt/windows/bin/arm-linux-androideabi-
NDKF=&--sysroot $NDK/platforms/android-$NDKABI/arch-arm&
#Android/ARM, armeabi (ARMv5TE soft-float), Android 2.2+ (Froyo)
DESTDIR=$DIR/android/armeabi
rm &$DESTDIR&/*.a
make clean
make HOST_CC=&gcc -m32& CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS=&$NDKF&
if [ -f $SRCDIR/src/libluajit.a ]; then
mv $SRCDIR/src/libluajit.a $DESTDIR/libluajit.a
# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
NDKARCH=&-march=armv7-a -Wl,--fix-cortex-a8&
DESTDIR=$DIR/android/armeabi-v7a
rm &$DESTDIR&/*.a
make clean
make HOST_CC=&gcc -m32& CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS=&$NDKF $NDKARCH&
if [ -f $SRCDIR/src/libluajit.a ]; then
mv $SRCDIR/src/libluajit.a $DESTDIR/libluajit.a
# Android/x86, x86 (i686 SSE3), Android 4.0+ (ICS)
DESTDIR=$DIR/android/x86
NDKVER=$NDK/toolchains/x86-4.7
NDKP=$NDKVER/prebuilt/windows/bin/i686-linux-android-
NDKF=&--sysroot $NDK/platforms/android-$NDKABI/arch-x86&
rm &$DESTDIR&/*.a
make clean
make HOST_CC=&gcc -m32& CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS=&$NDKF&
if [ -f $SRCDIR/src/libluajit.a ]; then
mv $SRCDIR/src/libluajit.a $DESTDIR/libluajit.a
make clean
最开始设置好SRCDIR和DIR这个是Luajit源代码的目录和编译好的库文件的安装目录。 & & NDK指定的是android ndk的安装目录。 & 原本cocos2d-x的脚本自动检测host(与这行代码相关 NDKP=$NDKVER/prebuilt/windows/bin/arm-linux-androideabi-),但是不太管用,所以统一修改为windows
这里还要注意下,我在编译armv7a的时候总是出现minilua.exe执行错误,无法编译成功,去掉-mfloat-abi=softfp后编译正常。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'cocos引擎v2.1版本android 编译问题解决办法 (cocos2d-x-3.4rc1) - 居家懒人 - 博客园
下载了最新版的cocos v2.1.2beta,使用cocos.exe来创建项目,而且在最下方的附件功能里还勾选了&支持x86架构cpu&这个选项,导致使用build_native.py编译不通过,以及cocos.py也compile不通过;提示android.mk的19行prebuilt-mk报错:***ANDROID NDK aborting,
&之后尝试做了几处改动&&添加了NDK_MODULE_PATH环境变量、使用了的从cocos下载的ndk版本\看网上别人的解释,prebult-mk报错是因为这个路径下更本链接不到我装在c盘的cocosframework, 于是按照别人说的拷贝了C:\Cocos\frameworks\cocos2d-x-3.4rc1这个目录到我自己项目的根目录,并且更名为cocos2d,android.mk里添加
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos),依然有问题,可能是这些改动使得cocos.py的compile可以通过了,看到的build success之类的提示,但仍然无法在eclipse编译出apk或者使用cocos.py 可以run出来apk但也运行不起来;
再一次的尝试,想到了以前2.x时代创建项目的办法,于是使用cocos.py的new命令来创建项目,&居然成功了,而且不仅使用cocos.py compile成功,直接eclipse在clean时就会自动使用build_native.py编译出libcocos2dcpp.so这个动态库文件,貌似是因为使用的最新的ndk导致可以这样(不管怎样,cygwin是可以彻底卸载了);
我不甘心,再次使用cocos.exe创建项目(不勾选支持x86架构cpu),也成功运行起来了,但我感觉脑子乱掉了,之前应该有这样操作过怎么就是不行现在又行了;
难道问题的关键在于使用了cocos.py的new命令之后做了某种cocos.exe创建项目时做不到的事情,以至于接下来使用cocos.exe创建的项目也ok? 同时也说明无需拷贝cocos2d的framework到自己项目,也无需添加$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)这三行,默认创建好的项目是可以读取到framework路径的;
好吧懒得去理清之前错误的原因了,能跑起来就可以,把过程记录下来,总算可以开开心心的做项目了。
win7下cocos v2.1 android项目总结:
1,cocosv2.1下载安装;
2,java sdk下载安装,
  新建环境变量JAVA_HOME:C:\Program Files\Java\jdk1.8.0_31,
  新建环境变量CLASSPATH:.;%JAVA_HOME%\lib\dt.%JAVA_HOME%\lib\tools.
  找到Path变量,新增:%JAVA_HOME%;
在cmd终端里输入java -version 回车看到类似1.8.0_31说明java环境ok了
3,android sdk,
  在百度网盘里下载到了包含了所有的到最新的android版本的adt-bundle-windows-x86_64-.zip,有8.59G,你也可以下载个空的adt bundle然后打开sdk manager来选择下载你需要的android sdk,不过记得要更改下载服务器路径选择国内的,google无法链接的你懂的
  新增环境变量ANDROID_SDK:E:\adt-bundle-windows-x86_64-\sdk\E:\adt-bundle-windows-x86_64-\sdk\platform-E:\adt-bundle-windows-x86_64-\sdk\
  新增环境变量ANDROID_SDK_ROOT:E:\adt-bundle-windows-x86_64-\sdk
  找到Path变量,新增:%ANDROID_SDK%;
在cmd终端里输入adb -h看到Android Debug Bridge version 1.0.32类似的语句说明android sdk环境ok了。
4,android ndk,
  直接在cocos商店下载当前版本时android-ndk-r10d,
  新增环境变量NDK_ROOT:E:\android-ndk-r10d;
  新增环境变量NDK_MODULE_PATH:C:\Cocos\frameworks\cocos2d-x-3.4rc1;C:\Cocos\frameworks\cocos2d-x-3.4rc1\C:\Cocos\frameworks\cocos2d-x-3.4rc1\
  在eclipse&里右键项目属性--&C/C++ Build--&Environment 里新增 NDK_MODULE_PATH:
内容:D:\android-ndk-r10d;D:/cocos2d-x-2.2.6;D:/cocos2d-x-2.2.6/cocos2dx/platform/third_party/android/prebuilt &(注意路径,这里是随便写的2.2.6)
最后,使用cocos.exe创建项目,如果你的android手机cpu不是x86架构的那么不要勾选下面的&支持x86架构cpu&,如果有问题,可以尝试使用cocos.py来new一个项目,vs2013跑起来没问题之后,就可打开eclipse来调试android了。
推荐使用cocos.py的compile命令,放弃使用build_native.py(eclipse clean和运行时也会自动调用build_native.py),直接删掉当前项目的build_native.py好了,或者你有精力的话可以去改一下这个build_native.py不要一运行就编译,因为目前版本我发现只要一clean或者运行时都会自动删掉libs/armeabi里的所有文件,当你的项目需要用到第三方sdk的.so文件的话,这里就会总被删掉而出问题了,所以推荐使用cocos.py的compile,细心的话你会在运行build_native.py时发现cocos官方也说了这么一句话:&We will remove this script next version,you should use cocos console to build android project.&。
其实cocos.py的run可以直接compile出apk文件并且在连接的手机上跑起来。
随笔 - 114【COCOS2DX-LUA 脚本开发之十四】解决自定义cpp类通过tolua++ binding LuaCocos2d后编译到Android运行黑屏(没有调用自定义cpp类)的问题! - 推酷
【COCOS2DX-LUA 脚本开发之十四】解决自定义cpp类通过tolua++ binding LuaCocos2d后编译到Android运行黑屏(没有调用自定义cpp类)的问题!
唉,首先说点闲话 – -。Himi搞了不短的时间,这个问题一直没有解决,最后终于在张大(cocos2dx引擎开发者之一 张小明)的指导下解决了此问题。
本章基于上一篇 &
& 与之前的项目整合&
在进入正文之前,讲解下一些基础知识:
(当前Himi的版本是cocos2xx 2.1.2 hotfix)
第一部分:
编译过项目到Android的童鞋们肯定知道创建好的Android项目下的jni下的Android.mk 这个文件,如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_STATIC_LIBRARIES := curl_static_prebuilt
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_lua_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,CocosDenshion/android)
$(call import-module,scripting/lua/proj.android/jni)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,extensions)
这个文件中,主要我们关注如下几个配置:‘
1. &LOCAL_SRC_FILES &: &编译到Android的本地的类cpp或c,比如自定义了一个类HSprite.h &HSprite.cpp
那么需要添加到这个&LOCAL_SRC_FILES 中,如下:
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HSprite.cpp
2.&LOCAL_C_INCLUDES &:编译的本地类所在的路径,例如你有一个HSprite类放在Himi的文件夹中,那么你可以如下形式添加:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
$(LOCAL_PATH)/../../Classes/Himi
那么在你其他的类进行引用Himi文件夹下的HSprite时,无需写完整路径,如下:
#include &Himi/HSprite.h&
可以直接如下导入:
#include &HSprite.h&
3. & &&LOCAL_STATIC_LIBRARIES &: 添加所需要链接的静态库
本章需要关注的是如下的配置:
4. & &call import-module && : &&编译对应的模块!
& & & &$(call import-module,cocos2dx) &:具体是从&NDK_MODULE_PATH 路径下的cocos2dx文件夹下的Android.mk
那么&NDK_MODULE_PATH 是指向哪里呢?哪里设置呢?下面详细讲解!
第二部分:
编译过项目到Android的童鞋们肯定也知道build_native.sh&这个文件,NDK_MODULE_PATH的路径也在此文件中进行设置, 如下图:
APPNAME=&Tuc4Android&
buildexternalsfromsource=
cat && EOF
usage: $0 [options]
Build C/C++ code for $APPNAME using Android NDK
-s Build externals from source
-h this help
while getopts &sh& OPTION; do
case &$OPTION& in
buildexternalsfromsource=1
if [ -z &${NDK_ROOT+aaa}& ];then
echo &please define NDK_ROOT&
DIR=&$( cd &$( dirname &${BASH_SOURCE[0]}& )& && pwd )&
# ... use paths relative to current directory
COCOS2DX_ROOT=&/Users/slater/Documents/cocos2d-2.1rc0-x-2.1.2-hotfix&
APP_ROOT=&/Users/slater/Desktop/TestUserCpp/TestUserCpp&
APP_ANDROID_ROOT=&/Users/slater/Desktop/TestUserCpp/TestUserCpp/proj.android&
echo &NDK_ROOT = $NDK_ROOT&
echo &COCOS2DX_ROOT = $COCOS2DX_ROOT&
echo &APP_ROOT = $APP_ROOT&
echo &APP_ANDROID_ROOT = $APP_ANDROID_ROOT&
# make sure assets is exist
if [ -d &$APP_ANDROID_ROOT&/assets ]; then
rm -rf &$APP_ANDROID_ROOT&/assets
mkdir &$APP_ANDROID_ROOT&/assets
# copy resources
for file in &$APP_ROOT&/Resources/*
if [ -d &$file& ]; then
cp -rf &$file& &$APP_ANDROID_ROOT&/assets
if [ -f &$file& ]; then
cp &$file& &$APP_ANDROID_ROOT&/assets
# copy icons (if they exist)
file=&$APP_ANDROID_ROOT&/assets/Icon-72.png
if [ -f &$file& ]; then
cp &$file& &$APP_ANDROID_ROOT&/res/drawable-hdpi/icon.png
file=&$APP_ANDROID_ROOT&/assets/Icon-48.png
if [ -f &$file& ]; then
cp &$file& &$APP_ANDROID_ROOT&/res/drawable-mdpi/icon.png
file=&$APP_ANDROID_ROOT&/assets/Icon-32.png
if [ -f &$file& ]; then
cp &$file& &$APP_ANDROID_ROOT&/res/drawable-ldpi/icon.png
if [[ &$buildexternalsfromsource& ]]; then
echo &Building external dependencies from source&
&$NDK_ROOT&/ndk-build -C &$APP_ANDROID_ROOT& $* \
&NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/source&
echo &Using prebuilt externals&
&$NDK_ROOT&/ndk-build -C &$APP_ANDROID_ROOT& $* \
&NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt&
在之前我们整合项目编译到Android时其中我们需要关注的是&COCOS2DX_ROOT、 APP_ROOT、 APP_ANDROID_ROOT这三个路径的设置。
那么本次我们关注的是最下方 &
NDK_MODULE_PATH &
是用于配置搜索编译模块的基础路径!
&此路径与第一部分的Android.mk中&call import-module &相关!
${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt”
表示两个路径,一个是COCOS2DX_ROOT的路径,另外一个是COCOS2DX_ROOT路径下的/cocos2dx/platform/third_party/android/prebuilt
通过如上两个知识点的简单的介绍,大家可能会对编译过程更深一步的理解。
现在开始讲解本章重点: &解决自定义cpp类通过tolua++ binding LuaCocos2d后编译到Android运行黑屏(没有调用自定义cpp类)的问题!
如果大家没有自定义类binding到LuaCocos2d中那么编译Android绝对是正确运行的,但是难免会自定义一些类供lua脚本使用,一般我们可以通过tolua++进行binding到LuaCocos2d中(参考Himi的另外一篇文章:
当正确binding到LuaCocos2d后,我们iphone模拟器运行后一切正常,那么当编译到Android后,总是出现黑屏,并屏幕显示有0个精灵 !
错误出在哪里呢?!首先我们最容易想到的是检查看 Android项目下jni下的Android.mk中的LOCAL_SRC_FILES 是否包含了你自定义的类!确定是否参与编译了!
如果确定参与编译了,并Android项目能正常运行,但是还是运行黑屏的话,那么你可以打印lua中调用的自定义类!最后会发现打印语句编译到Android后,根本没打印!基本上那就可以判定是LuaCocos2d这个类中并没有binding你自定义类!
有些童鞋就奇怪说可以确定xcode项目下的LuaCocos2d类中确实binding了自定义类啊!!
是的,但是你看到的只是ios项目所用的LuaCocos2d, 真正编译到Android后的LuaCocos2d根本不是ios项目下的LuaCocos2d这个类!!
那么到底是哪里的LuaCocos2d被编译到Android了呢?其实不难发现,通过Android.mk中看到编译lua模块的语句:
$(call import-module,scripting/lua/proj.android/jni) & : 我们可以知道它指向cocos2dx引擎下的scripting/lua/proj.android/jni/Android.mk
路径如下:
打开后内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE
:= cocos_lua_static
LOCAL_MODULE_FILENAME := liblua
LOCAL_SRC_FILES :=../../lua/lapi.c \
../../lua/lauxlib.c \
../../lua/lbaselib.c \
../../lua/lcode.c \
../../lua/ldblib.c \
../../lua/ldebug.c \
../../lua/ldo.c \
../../lua/ldump.c \
../../lua/lfunc.c \
../../lua/lgc.c \
../../lua/linit.c \
../../lua/liolib.c \
../../lua/llex.c \
../../lua/lmathlib.c \
../../lua/lmem.c \
../../lua/loadlib.c \
../../lua/lobject.c \
../../lua/lopcodes.c \
../../lua/loslib.c \
../../lua/lparser.c \
../../lua/lstate.c \
../../lua/lstring.c \
../../lua/lstrlib.c \
../../lua/ltable.c \
../../lua/ltablib.c \
../../lua/ltm.c \
../../lua/lua.c \
../../lua/lundump.c \
../../lua/lvm.c \
../../lua/lzio.c \
../../lua/print.c \
../../tolua/tolua_event.c \
../../tolua/tolua_is.c \
../../tolua/tolua_map.c \
../../tolua/tolua_push.c \
../../tolua/tolua_to.c \
../../cocos2dx_support/CCLuaBridge.cpp \
../../cocos2dx_support/CCLuaEngine.cpp \
../../cocos2dx_support/CCLuaStack.cpp \
../../cocos2dx_support/CCLuaValue.cpp \
../../cocos2dx_support/Cocos2dxLuaLoader.cpp \
../../cocos2dx_support/LuaCocos2d.cpp \
../../cocos2dx_support/tolua_fix.c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../lua \
$(LOCAL_PATH)/../../tolua \
$(LOCAL_PATH)/../../cocos2dx_support
LOCAL_C_INCLUDES := $(LOCAL_PATH)/ \
$(LOCAL_PATH)/../../lua \
$(LOCAL_PATH)/../../tolua \
$(LOCAL_PATH)/../../../../cocos2dx \
$(LOCAL_PATH)/../../../../cocos2dx/include \
$(LOCAL_PATH)/../../../../cocos2dx/platform \
$(LOCAL_PATH)/../../../../cocos2dx/platform/android \
$(LOCAL_PATH)/../../../../cocos2dx/kazmath/include \
$(LOCAL_PATH)/../../../../CocosDenshion/include
LOCAL_CFLAGS += -Wno-psabi
LOCAL_EXPORT_CFLAGS += -Wno-psabi
include $(BUILD_STATIC_LIBRARY)
从这个mk文件的内容中我们可以看到参与编译的LuaCocos2d类是相对于当前Android.mk 路径的 &../../cocos2dx_support/LuaCocos2d.cpp \
从上面的附上的图可以清楚的看到这个路径,是当前Android.mk的路径的上两层后的目录下的cocos2dx_support的LuaCocos2d.cpp文件!
可能讲到这里,很多童鞋应该恍然大悟了吧!
虽然我们自定义类通过tolua++ binding到项目下的LuaCococs2d 中,但是参与Android编译的LuaCocos2d并不是你项目下的!
& & & OK,那下面给出几种解决方式:
& & & 第一种:将我们项目下的已经binding好的LuaCococs2d类替换参与编译的LuaCococs2d类!
& & & & & & & & & & &(注:LuaCococs2d.h中导入的自定义类路径,引用你项目下的对应类即可)
& & 第二种: 将编译的Lua模块的Android.mk中的参与编译的LuaCococs2d路径改成自己项目下的LuaCococs2d路径即可。
& & 第三种: 通过修改&NDK_MODULE_PATH 路径,将其指向我们项目下的libs路径,然后将参与编译的缺少模块copy到我们的项目下对应路径即可!
这个问题其实比较容易解决,但是主要的是理解原理!否则会越忙越乱!
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 cocos2dx luaengine 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信