参考链接:https://www.jianshu.com/p/34260c0c5175

环境版本信息

Mac 10.15.1
Xcode 11.1
Cocos Creator 2.2.0
Python 2.7

一、首先用ccc创建一个hello world工程

快捷键command+shift+b 打开构建面板 构建build目录

二、使用xcode打开工程


然后在Classes文件夹中创建c++测试文件

CustomLog.h 代码如下:

#ifndef CustomLog_h
#define CustomLog_h#include <stdio.h>
#include <string.h>class CustomLog{
public:void MLog(const char * msg);static CustomLog* getInstance();CustomLog();~CustomLog();
};
#endif /* CustomLog_h */

CustomLog.cpp 代码如下:

nclude "CustomLog.h"
#include "cocos2d.h"static CustomLog* s_CustomLog = nullptr;
CustomLog::CustomLog(){cocos2d::log("CustomLog");
}
CustomLog::~CustomLog(){cocos2d::log("~CustomLog");
}
CustomLog* CustomLog::getInstance(){if (!s_CustomLog) {s_CustomLog = new CustomLog();}return s_CustomLog;
}
void CustomLog::MLog(const char* msg){cocos2d::log("MLog~~~~~~ = %s",msg);
}

三、生成jsb绑定文件

1、首先将Classes中的Custom文件夹复制到/Applications/CocosCreator.app/Contents/Resources/cocos2d-x中
2、然后进入目录/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/tools/tojs中
复制cocos2dx.ini文件改名为CustomLog.ini
并修改CustomLog.ini中6个key的值为

[CustomLog]
prefix = custom
target_namespace =
headers = %(cocosdir)s/Custom/CustomLog.h
classes = CustomLog
abstract_classes = CustomLog

复制genbindings.py为genbindings_custom.py
并修改genbindings_custom.py中的

cmd_args = {'CustomLog.ini': ('CustomLog', 'jsb_CustomLog_auto')}

3、运行genbindings_custom.py

#进入genbindings_custom.py当前目录cd /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/tools/tojs python genbindings_custom.py

genbindings_custom.py运行可能会缺少库 在参考链接中有解决方案

看到

----------------------------------------
Generating javascript bindings succeeds.
----------------------------------------

代表生成绑定成功

四、将生成的绑定文件 添加到项目中

在目录/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/auto中可以找到
jsb_CustomLog_auto.hpp
jsb_CustomLog_auto.cpp

复制两个文件到Classes/CustomJsb文件夹中

//在AppDelegate.cpp中引入头文件
并在applicationDidFinishLaunching()方法中的jsb_register_all_modules()后调用se->addRegisterCallback(register_all_custom)

//AppDelegate.cpp
#include "CustomJsb/jsb_CustomLog_auto.hpp"
...
bool AppDelegate::applicationDidFinishLaunching(){...jsb_register_all_modules();se->addRegisterCallback(register_all_custom);//添加...
}

最后检查build phases是否存在两个新增cpp文件

android需要配置Android.mk文件
/Users/lewan/Documents/ccc_dir/ccc_test_1/build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Android.mk

LOCAL_SRC_FILES := hellojavascript/main.cpp \../../../Classes/AppDelegate.cpp \../../../Classes/Custom/CustomLog.cpp \../../../Classes/CustomJsb/jsb_CustomLog_auto.cpp \

五、在js中调用

    onLoad: function () {if (cc.sys.isNative) {cc.log('this is native')var m_CustomLog = CustomLog.getInstance();m_CustomLog.MLog("啦啦啦啦啦啦啦啦 js");}}

运行结果 :

ios
android

ccc 2.2.0 jsb绑定相关推荐

  1. CocosCreator2.0.9的JSB绑定 - 手动绑定

    CocosCreator2.0.9的JSB绑定 - 手动绑定 前言 准备 建立工程 先来个简单的 绑定整个C++类给JS 关于TypeScript里面的自动提示 在Android设备上 总结 前言 大 ...

  2. java中JSB_深入解析Cocos Creator JSB绑定原理以及应用实践

    背景 一直以来,ABCmouse 项目中的整体 JS/Native 通信调用结构都是基于 callStaticMethod evalString 的方式.通过 callStaticMethod 方法我 ...

  3. cocos creator jsb2.0手动绑定过程

    在打包原生包的时候js层想调用c++层,但是没有对应的实现需要自己扩展自己的jsb,官方有两种绑定方式:手动绑定和自动绑定,这里着重介绍手动绑定: 首先找到cocos creator自带的c++层的源 ...

  4. Vue 3.0双向绑定原理的实现

    proxy方法 vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过new Proxy()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调. Vu ...

  5. cocos2d-js 3.0 jsb环境调用底层java代码

    from: http://www.cocoachina.com/bbs/read.php?tid=209403 C++端工作 环境还是cocos2d-js 3.0 beta,准备给javascript ...

  6. jsb调用java_cocos2d-js 3.0 jsb环境调用底层java代码

    C++端工作 环境还是cocos2d-js 3.0 beta,准备给javascript加一个osInfo的函数,来判断用户的系统信息以及网络信息. 首先在项目目录下的frameworks/runti ...

  7. Android8.0 HIDL绑定式和直通式区别

    以前Adnroid版本的hal和framwork的代码紧密联系起来的,Google为了framework升级的方便在Android 8.0 上对 Android 操作系统底层进行了重新架构.新的架构已 ...

  8. Cocos Creator JSB绑定

    至于绑定所需要的环境,自己百度,文章最后提供部分环境依赖 D:\CocosCreator 为Cocos Creator安装目录 在D:\CocosCreator\resources\cocos2d-x ...

  9. Cocos Creator JSB绑定 MAC系统环境

    编译环境 python2.7(mac自带) 1.安装PyYAML mac: sudo easy_install pyyaml win: pip install pyyaml 2.安装Cheetah 下 ...

最新文章

  1. 汽车雷达 -- 车载ADAS常用中英文对照
  2. 正则表达式 非捕获性分组
  3. 金陵科技学院计算机开设课程,金陵科技学院各专业介绍
  4. 阿里云ECI如何6秒扩容3000容器实例?
  5. 试解释如下两个概念:CLR和CTS
  6. JAVA 多线程 JAVA 如何开发一个自定义线程池
  7. JAVA 8:Lambdas表达式初体验
  8. android自动创建快捷方式,Android开发之生成桌面快捷方式细则(原创)
  9. 每日一九度之 题目1091:棋盘游戏
  10. YOLO学习笔记4——YOLOV2详解+论文解读
  11. window server 2012 win7 远程桌面报错问题,无法远程
  12. AIS数据修复-三次样条插值法(Cubic spline interpolation)
  13. dux修改index.php,DUX主题修改首页轮播图为通栏模式
  14. 关于nmap和traceroute在虚拟机里使用的问题
  15. 【摘录】大学课程对照英文翻译
  16. Unity - Timeline 之About Timeline(关于Timeline)
  17. Fleck For Web Socket
  18. Oracle删表报错ora00054,Oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
  19. Fama三因子和Carhat 四因子的介绍和计算
  20. 人工智能如何改善运输和物流

热门文章

  1. 生成树协议H3C真题
  2. 【云周刊】第183期:阿里云发布ET工业大脑开放平台,交付只需6天
  3. 【有利可图网】PS实战系列62:用PS将常规图片设计转成超棒的水墨效果
  4. Oracle10g之传输表空间详解
  5. Fielding博士论文导读----第1章
  6. 聆听中国—一款收音机类App的前世今生
  7. 老人机应用_每日佳软:老人机应该具备什么功能?
  8. jooq多表查询_JOOQ 入门(三)-- CRUD 语句
  9. 华环光端机MySQL_【HUAHUAN华环155M光端机,H9MO-LME-01T1642/EJ光端机】价格_厂家 - 中国供应商...
  10. 抖音小游戏背后:醉翁之意不在酒