关于lua绑定C++问题

通过genbindings.py自动生成lua绑定文件,加载到工程后出现如下错误:

Undefined symbols for architecture i386:
“register_all_LuaManager(lua_State*)”, referenced from:
lua_module_register(lua_State*) in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

LuaManager是我自定义的类.

到底是什么问题,请指教…

问题解决了(有点坑):

通过使用 bindings-generator 自动生成 lua绑定,文件为LuaManager.cpp和LuaManager.hpp文件,
一班情况下 .hpp 里面需要include .cpp文件,可是不知道为什么.hpp文件中的 int register_all_LuaManager(lua_State* tolua_S); 全局函数访问不到它的实现函数,
需要在.hpp文件里面 include “LuaManager.cpp” 文件, 运行才能通过.

至于为什么会出现这种原因,还不知道, 如果哪位大神看到有答案,请回复,谢谢了…

额,lz 把 LuaManager.cpp 添加到工程去了么 ?

添加过的, 奇葩的是.hpp文件的函数声明调不到cpp文件的实现函数.:2:

如果是这样奇怪,clean 再编译 。

clean是没有用的, 不过有其他解决办法了:14: .

将自定义的类放在cocos2d_libs工程下,就可以连接成功了.如下:

这样就行了,原因还是不明…

放到自己工程去不行,不可能的。。

现在已经解决了,需要include “相对路径” 才行,

谢谢:14:

借宝地追问一下,为啥我真机还是模拟器lua 都找不到对应的定义 ,例如 local test = MyClass.new() 我没有定义namespace,报MyClass nil:6::6::6:

local test = cc.MyClass:create()

类名前需要前缀名,这是在.ini文件中配置的,类名后面是类的构造方法, 你的类是什么就是什么.

回复的比较晚,不知问题是否已经解决.

前缀是必须的?