当前位置:网站首页>quick-3.5 lua调用c++
quick-3.5 lua调用c++
2022-07-31 05:15:00 【xuyid】
1.生成Holo.cpp和Holo.h文件,具体实现省略。。。(Holo这个名字可以随意改)
2.在quick-3.5目录下的cocos文件夹里面新建my文件夹(my可以随意改名),然后把.cpp和.h文件放到quick-3.5/cocos/my
3.进入quick-3.5/tools/tolua文件夹下,复制cocos2dx_csloader.ini文件改名叫my_holo.ini然后修改my_holo.ini如下:
[my_holo]
# the prefix to be added to the generated functions. You might or might not use this in your own
# templates
prefix = my_holo
# create a target namespace (in javascript, this would create some code like the equiv. to `ns = ns || {}`)
# all classes will be embedded in that namespace
target_namespace = cc
android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include
android_flags = -D_SIZE_T_DEFINED_
clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include
clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__
cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android
cocos_flags = -DANDROID
cxxgenerator_headers =
# extra arguments for clang
extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s
# what headers to parse
headers = %(cocosdir)s/cocos/my/Holo.h
# what classes to produce code for. You can use regular expressions here. When testing the regular
# expression, it will be enclosed in "^$", like this: "^Menu*$".
classes = Holo.*
# what should we skip? in the format ClassName::[function function]
# ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also
# regular expressions, they will not be surrounded by "^$". If you want to skip a whole class, just
# add a single "*" as functions. See bellow for several examples. A special class name is "*", which
# will apply to all class names. This is a convenience wildcard to be able to skip similar named
# functions from all classes.
skip =
rename_functions =
rename_classes =
# for all class names, should we remove something when registering in the target VM?
remove_prefix =
# classes for which there will be no "parent" lookup
classes_have_no_parents =
# base classes which will be skipped when their sub-classes found them.
base_classes_to_skip = Clonable
# classes that create no constructor
# Set is special and we will use a hand-written constructor
abstract_classes =
# Determining whether to use script object(js object) to control the lifecycle of native(cpp) object or the other way around. Supported values are 'yes' or 'no'.
script_control_cpp = no
4.修改genbindings.py文件,在136行-150行之间插入:'my_holo.ini' : ('my_holo','lua_my_holo_auto'), \
5.打开终端,cd至quick-3.5/tools/tolua文件夹下 运行./genbindings.py,编译成功后会在quick-3.5/cocos/scripting/lua-bindings/auto目录下生成lua_my_holo_auto.cpp和lua_my_holo_auto.hpp
6.进入quick-3.5/tools/simulator/frameworks/runtime-src/proj.ios_mac目录,用xcode打开simulator.xcodeproj,点击左边目录结构,
在cocos2d_lua_bindings.xcodeproj目录下右键点击auto目录选择add fileds to "cocos2d_lua_bindings.xcodeproj",添加lua_my_holo_auto.cpp和lua_my_holo_auto.hpp
键点击cocos2d_libs.xcodeproj目录add fileds to "cocos2d_libs.xcodeproj",添加my文件夹
7.进入Classes文件夹,打开lua_module_register.h文件,在上面添加#include "lua_my_holo_auto.hpp"头文件,在lua_module_register方法下添加register_all_my_holo(L);
8.在xcode选择Simulator Mac 重新编译mac模拟器(注:1-8步骤只是改模拟器,9步骤才是改工程)
9.选择你的工程项目(工程名假如是:mydemo),按照上面的方法,
把quick-3.5/tools/tolua改成mydemo/frameworks/cocos2d-x/tools/tolua
把quick-3.5/cocos/scripting/lua-bindings/auto改成mydemo/frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto
把quick-3.5/tools/simulator/frameworks/runtime-src/proj.ios_mac改成mydemo/frameworks/runtime-src/proj.ios_mac
打mydemo.xcodeproj按照上面1-7重新做一遍就可以了
边栏推荐
猜你喜欢

GUCCI、LV等奢侈品巨头如何布局元宇宙的,其他品牌应该跟上吗?

GUCCI, LV and other luxury giant universe how to layout yuan, other brands should keep up with?

带你搞懂MySQL隔离级别,两个事务同时操作同一行数据会怎样?

mac10.14中安装mysqldb

Common JVM interview questions and answers

对于输出点是时间戳的渗透测试方法(以Oracle数据库为例)

Linux中mysql密码修改方法(亲测可用)

NFT:数字所有权的核心

leetcode-1833. 雪糕的最大数量(排序+贪心)

leetcode-2321. 拼接数组的最大分数(差分+枚举)
随机推荐
理解js运算符
【windows】--- SQL Server 2008 超详细安装教程
Digital twins will be an important way to enter the "metaverse"
"limit" query in Oracle database
2021美赛C题M奖思路
数字孪生将成为进入“元宇宙”一项重要的途径
Yuan prospect and four track of the universe
数字取证autopsy工具用法
什么是 GameFi?
阿里一面,说说你知道消息中间件的应用场景有哪些?
常见JVM面试题及答案整理
Year-end summary - the years are quiet~
Three-party login using wallet Metamask based on web3.0
[Elastic-Job] Overview of Distributed Scheduling Tasks
mac10.14中安装mysqldb
Oracle数据库中的“limit”查询
Memcached :安装
MySql to create data tables
[Cloud native] Ribbon is no longer used at the bottom layer of OpenFeign starting from the 2020.0.X version
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息