关于在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,就成了这样

 

 

 

 

 

 

 

  

  

  

 

posted @ 2021-01-30 17:33  学习消磨时光  阅读(306)  评论(0)    收藏  举报