关于在cocos2d_x3.17的cpp工程里加入lua模块
一、在vs中导入
公司的项目里是cpp主模块,然后lua当脚本使用,方便热更。
自己在捣鼓cocos2d_x3.17的时候发现cpp模块里没有lua模块,就想导入lua模块。
然后查了下百度,这个链接教你怎么在vs中导入lua模块,https://blog.csdn.net/yfcglory/article/details/106666922。
主要的是这两步:
1:拷贝cocos2d-x-3.17.2\cocos目录下的scripting文件夹放到自己项目CocosTest\cocos2d\cocos目录下
2:拷贝cocos2d-x-3.17.2\external目录下的lua文件夹放到自己项目CocosTest\cocos2d\external目录下
然后就是添加依赖关系。
二、在as中导入
但是大家用cocos2d都是开发手游,所以在as中导入也是必不可少的。
所以分为以下几步:
1:拷贝cocos2d-x-3.17.2\cocos目录下的scripting文件夹放到自己项目CocosTest\cocos2d\cocos目录下
2:拷贝cocos2d-x-3.17.2\external目录下的lua文件夹放到自己项目CocosTest\cocos2d\external目录下
3:在主模块的LOCAL_STATIC_LIBRARIES := cocos2dx_static,把cocos2dx_static改为cocos2d_lua_static。
然后在该.mk文件中加入$(call import-module, cocos/scripting/lua-bindings/proj.android)

三、as的.mk浅析
.mk文件的各种属性在ndk的网站里可以找到。
1:LOCAL_PATH := $(call my-dir)
这个是.mk文件所在的文件的路径
2:include $(CLEAR_VARS)
清除LOCAL_C_INCLUDES,LOCAL_MODULE_FILENAME等的变量值,但是LOCAL_PATH 不会清除
3:LOCAL_MODULE := MyGame_shared
模块名,不能有相同的模块名
4:LOCAL_MODULE_FILENAME := libMyGame
模块文件名,生成的.so文件前会有这名字
5:LOCAL_SRC_FILES := $(LOCAL_PATH)/hellocpp/main.cpp \
需要编译的文件,这个应该会打到库文件里,有需要的但是没加上的话,有的函数就会显示找不到
6:LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
上面的编译.cpp或者是.c文件的文件路径,需要的编译文件,as会在这些目录里找。
7:LOCAL_STATIC_LIBRARIES := cocos2d_lua_static
编译LOCAL_MODULE 模块的依赖模块。
8:include $(BUILD_SHARED_LIBRARY)
建立动态链接库
9:$(call import-add-path, $(LOCAL_PATH)/../../../cocos2d)
$(call import-module, cocos/scripting/lua-bindings/proj.android)
依赖模块的.mk文件的路径
总的来说,编译依赖像一颗树形的结构,拿libMyGame来说这是我的动态链接库,这是游戏的主逻辑模块,编译依赖模块之前是 cocos2dx_static,
然后是依赖关系是这样的

现在在中间插入了cocos2d_lua_static,就成了这样


浙公网安备 33010602011771号