zoukankan      html  css  js  c++  java
  • cocos2dx 自己主动绑定js

    依照教程把全部资源下载好后.......

    找到cocos2dx project下的tools/bindings-generator/test

    发现里面有test.sh , test.ini , 去掉simple后缀后的user.cfg  , 与userconf.ini ; 把这四个文件里的路径都改为那些资源的路径

    "test.sh"
    # options
    
    usage(){
    cat << EOF
    usage: $0 [options]
    
    Test the C++ <-> JS bindings generator
    
    OPTIONS:
    -h	this help
    
    Dependencies :
    PYTHON_BIN
    CLANG_ROOT
    NDK_ROOT
    
    Define this to run from a different directory
    CXX_GENERATOR_ROOT
    
    EOF
    }
    
    while getopts "dvh" OPTION; do
    case "$OPTION" in
    d)
    debug=1
    ;;
    v)
    verbose=1
    ;;
    h)
    usage
    exit 0
    ;;
    esac
    done
    
    # exit this script if any commmand fails
    set -e
    
    # find current dir
    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    
    # read user.cfg if it exists and is readable
    
    _CFG_FILE=$(dirname "$0")"/user.cfg"
    if [ -e "$_CFG_FILE" ]
    then
        [ -r "$_CFG_FILE" ] || die "Fatal Error: $_CFG_FILE exists but is unreadable"
        . "$_CFG_FILE"
    fi
    
    # paths
    
    if [ -z "${NDK_ROOT+aaa}" ]; then
    # ... if NDK_ROOT is not set, use "$HOME/bin/android-ndk"
        NDK_ROOT="/Users/tudu/Downloads/android-ndk-r9c"
    fi
    
    if [ -z "${CLANG_ROOT+aaa}" ]; then
    # ... if CLANG_ROOT is not set, use "$HOME/bin/clang+llvm-3.1"
        CLANG_ROOT="/Users/tudu/Downloads/clang+llvm-3.1-x86_64-apple-darwin11"
    fi
    
    if [ -z "${PYTHON_BIN+aaa}" ]; then
    # ... if PYTHON_BIN is not set, use "/usr/bin/python2.7"
        PYTHON_BIN="/usr/bin/python2.7"
    fi
    
    # paths with defaults hardcoded to relative paths
    
    if [ -z "${CXX_GENERATOR_ROOT+aaa}" ]; then
        CXX_GENERATOR_ROOT="$DIR/.."
    fi
    
    echo "CLANG_ROOT: $CLANG_ROOT"
    echo "NDK_ROOT: $NDK_ROOT"
    echo "CXX_GENERATOR_ROOT: $CXX_GENERATOR_ROOT"
    echo "PYTHON_BIN: $PYTHON_BIN"
    
    # Generate bindings for simpletest using Android's system headers
    echo "Generating bindings for simpletest with Android headers..."
    set -x
    LD_LIBRARY_PATH=${CLANG_ROOT}/lib $PYTHON_BIN ${CXX_GENERATOR_ROOT}/generator.py ${CXX_GENERATOR_ROOT}/test/test.ini -s testandroid -o ./simple_test_bindings
    





    "test.ini"
    <pre name="code" class="plain">[testandroid]
    name = simple_test
    prefix = ttttttt
    classes = testbang
    cocosdir = /Users/tuyou/Downloads/cocos2d-x-2.2.3
    
    # 从 cocos2dx.ini 等搬过来的
    cocos_headers = -I%(cocosdir)s/cocos2dx/include -I%(cocosdir)s/cocos2dx/platform -I%(cocosdir)s/cocos2dx/platform/android -I%(cocosdir)s/cocos2dx -I%(cocosdir)s/cocos2dx/kazmath/include 
    cocos_flags = -DANDROID -DCOCOS2D_JAVASCRIPT
    
    
    extra_arguments = %(cocos_headers)s %(cocos_flags)s -D_SIZE_T_DEFINED_ -nostdinc -nostdinc++ -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.6/include -I%(clangllvmdir)s/lib/clang/3.1/include -I%(cxxgeneratordir)s/test/simple_test -x c++
    #headers = %(cxxgeneratordir)s/test/simple_test/test.h
    headers = /Users/tuyou/Downloads/cocos2d-x-2.2.3/tools/bindings-generator/test/simple_test/test.h
    
    target_namespace =
    remove_prefix =
    skip = 
    base_objects =
    abstract_classes =
    classes_have_type_info = no
    rename =
    rename_functions =
    rename_classes =
    # 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 =
    
    # 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 = yes
    


    
    
    </pre><p></p><pre>

    "user.cfg"
    PYTHON_BIN=/usr/bin/python2.7


    "userconf.ini"
    [DEFAULT]
    androidndkdir=/Users/tudu/Downloads/android-ndk-r9c
    clangllvmdir=/Users/tudu/Downloads/clang+llvm-3.1-x86_64-apple-darwin11
    cxxgeneratordir=/Users/tudu/Downloads/cocos2d-x-2.2.3/tools/bindings-generator/test
    


    然后执行test.sh

    OK了

    关于终端打印出的错误提示 , 以下这些warning貌似没影响: 

    /Library/Python/2.7/site-packages/Cheetah-2.4.4-py2.7.egg/Cheetah/Compiler.py:1509: UserWarning: 
    You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper.
      "
    You don't have the C version of NameMapper installed! "
    ====
    Errors in parsing headers:
    1. <severity = Warning,
        location = <SourceLocation file None, line 0, column 0>,
        details = "argument unused during compilation: '-nostdinc++'">
    ====


    假设有severity = error就要检查一番了 , 之前的error一般都能够通过改动上面那些路径而解决


    自己主动绑定的问题 : 

    1 . 不能绑定继承的第二个类 , 一个类继承多个类的时候 , 仅仅有被继承的第一个类被绑定了 ,原因是 "JS_InitClass"这个函数的形參列表中仅仅能接受一个父类.以下是形參列表:

    JS_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
                 JSClass *clasp, JSNative constructor, unsigned nargs,
                 JSPropertySpec *ps, JSFunctionSpec *fs,
                 JSPropertySpec *static_ps, JSFunctionSpec *static_fs);



     
  • 相关阅读:
    manjora20安装搜狗输入法
    manjora20使用体验
    deepin20体验
    deepin20搜狗输入法使用
    deepin20使用snap并设置代理
    C#服务器端使用office组件
    华为多屏互动看学英语
    ThinkPad S5立体声混响以及语音识别
    mate10碎屏机当成小电脑使用尝试
    刷机错误ERROR:STATUS_BROM_CMD__FAIL
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6985225.html
Copyright © 2011-2022 走看看