先上环境:Windows7 + Cocos2dx3.2 + quickcocos2dx3.3 + Sublime + python2.7.3
在项目路径E:\projecttest\second\frameworks\runtime-src\Classes下添加了自定义类MySprite.h 和 MySprite.cpp,接着通过添加custom_api.ini, 修改genbindings.py.然后终端运行genbindinggs.py得到了
lua_custom_api_auto.cpp , lua_custom_api_auto.hpp ,lua_custom_api_auto_api.lua 和MySprite.lua。一切都很顺利。
接着就将自定义C++类注册到lua。步骤都是按官方教程http://cn.cocos2d-x.org/tutorial/show?id=1749
完成的。编译都过了。
但是在MainScene的ctor()中添加local a = my.MySprite.createMS(“icon.png”)进行测试时就报错了
:15: error in function ‘lua_custom_api_MySprite_createMS’.
argument #1 is ‘string’; ‘MySprite’ expected.
求给个使用的方法,刚学quick-lua望指教。
最后附上custom_api.ini文件内容,由于不能上传只能直接粘了。。。
the prefix to be added to the generated functions. You might or might not use this in your own
templates
prefix = custom_api
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 = my
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 -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/external
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/…/runtime-src/Classes/MySprite.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 = MySprite.*
what should we skip? in the format ClassName::
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 =
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
