cocos2d-x 3.0 bindings-generator 遇到的问题,请大神指点

报错如下,请大神帮忙看看。

generating userconf.ini…
Generating bindings for towest…
Using userconfig
(‘androidndkdir’, ‘/Users/ksinger/Documents/android-ndk-r9b’), (‘clangllvmdir’, ‘/Users/ksinger/Documents/android-ndk-r9b/toolchains/llvm-3.3/prebuilt/darwin-x86_64’), (‘cocosdir’, ‘/Users/ksinger/Documents/code/towest/LuaToWest’), (‘cxxgeneratordir’, ‘/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator’), (‘extra_flags’, ‘’)]

… Generating bindings for target lua

… … Processing section towest

/Library/Python/2.7/site-packages/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.
"\nYou don’t have the C version of NameMapper installed! "
Traceback (most recent call last):
File “/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator/generator.py”, line 1294, in
main()
File “/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator/generator.py”, line 1290, in main
generator.generate_code()
File “/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator/generator.py”, line 980, in generate_code
self._parse_headers()
File “/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator/generator.py”, line 1007, in _parse_headers
tu = self.index.parse(header, self.clang_args)
File “/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator/clang/cindex.py”, line 2109, in parse
self)
File “/Users/ksinger/Documents/code/towest/LuaToWest/tools/bindings-generator/clang/cindex.py”, line 2221, in from_source
raise TranslationUnitLoadError(“Error parsing translation unit.”)
TranslationUnitLoadError: Error parsing translation unit.

Generating lua bindings fails.

附录ini文件:

bash-3.2$ more towest.ini

the prefix to be added to the generated functions. You might or might not use this in your own

templates

prefix = towest

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

cpp_namespace = team::lua

target_namespace = tl

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
android_flags = -D_SIZE_T_DEFINED_

clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include
clang_flags = -nostdinc -x c++ -std=c++11

cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/2d -I%(cocosdir)s/cocos/base -I%(cocosdir)s/cocos/ui -I%(cocosdir)s/cocos/physics -I%(cocosdir)s/cocos/2d/platform -I%(cocosdir)s/cocos/2d/platform/android -I%(cocosdir)s/cocos/math/kazmath -I%(cocosdir)s/extensions -I%(cocosdir)s/external -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s -I%(cocosdir)s/cocos/scripting/lua-bindings/manual

cocos_flags = -DANDROID -DCOCOS2D_JAVASCRIPT -U__MINGW32__

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 = -I%(cocosdir)s/Classes/core/RuntimeCoreLua.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 = HttpFile HttpString FileUtil SystemUtil

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

可能是哪里的配置问题呢?

顶,遇到一样的问题

该问题已经解决,是ini文件格式问题。修改的时候要万分小心

我也遇到这个问题。 LZ是否能提点一下具体是什么格式问题?
是保存的格式,还是文本内部的空格换行之类?

多谢了!!!

我遇到同样的问题,请问你是怎么解决的啊?什么格式问题?

一样的问题,看LZ分享

到底怎么回事,最后也没给说明啊

我也遇到这样的问题,我也找到原因了,就是headers的路径有问题,因为genbindings.py的位置不同,所以相应的

project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
cocos_root = os.path.abspath(os.path.join(project_root, ''))
cxx_generator_root = os.path.abspath(os.path.join(project_root, 'tools/bindings-generator'))


```

都会相应改变,project_root和cocos_root是一样的都是从genbindings.py开始算起向上2个层级,这样再来比对你的headers的路径就知道是不是对的了,哈哈还是要对观察源代码啊

能说的具体点吗