请教,lua binding的时候,如何处理C++中的指针参数和结构体

请教,lua binding的时候,如何处理C++中的指针参数和结构体。看了下自动绑定生成的代码,遇到结构体的时候,代码里面直接就不转化了,提示“ #pragma warning NO CONVERSION TO NATIVE FOR slCreatureProperties;”最后那个是结构体。指针也在lua里面如何调用也不是太清楚,知道的人说下如何处理lua binding和lua中如何调用

斑竹大侠呢,快来顶两个

:6::6::6:

:9: :9: :9: :9:

:3: :3: :3: :3:

指针参数的话,可以继承cocos2d::Ref,会生成object_to_luaval进行转换,结构体如果不复杂的话,可以在conversions.yaml配置转换函数,然后在LuaBasicConversions里面进行实现,如果复杂的话,建议改成类,传递指针

这样改底层的话,如果我结构体很多的话,岂不是很麻烦,而且感觉这种底层修改是不应该和具体产品相关,可以改成个通用的转换。另外,具体如何使用能否说下
现在的步骤肯定是这样几点,1.是函数的注册,2是结构体的注册,3是函数的调用。这三个步骤,你能否写个例子让我参考下。以下面为例
struct stPorpty{
int i;
string s;
double d;}
int myfunc(stPorpty stParam)
{
return 0;
}

另外,我看见有个luabind类库,不知道这个类库是否可用,粗略的看了下,貌似这个类库需要手工一个个的转换需要用到的函数和类,有点费事。而且,如果我仅仅用来给我目前的程序中用,(我用cococs自带的绑定工具生成后,发现了这个处理不了的函数和结构体,如果我单独拿出这个类成员函数和结构体用luabind类库来进行处理,好像没作用,不知道怎么回事)

这两文件,convers.yaml文件仅仅是打包的使用的吧,后面那个LuaBasicConversions文件即使对要处理的结构体转换做了内容定义,但是结构体注册和函数注册也是不是需要处理下,不然自动绑定工具怎么知道需要调用到你添加的这个转换函数呢

单独的函数不知道怎么弄,我用的都是成员函数,stPorpty可以改成这样子:
class CPorpty : public Ref
{
public:
CPorpty* create( string s, double d );
void myFun();

private:
string s;
double d;
}

然后把相关的信息加到.ini文件里面,允许genbindings.py就可以生成出来了

convers.yaml里面是一些转换的配置,比如里面的"Point": “point_to_luaval(tolua_S, ${in_value})”,是说c++中的Point这个结构,用point_to_luaval这个函数转换到lua那边使用,point_to_luaval这个函数是定义在LuaBasicConversions.h里面的,具体你可以自己看下。

如果没有定义的话,那默认就是调用object_to_luaval进行转换,但是object_to_luaval里面有一个这样的转换“cocos2d::Ref* dynObject = dynamic_cast<cocos2d::Ref *>(ret)”,也就是说你这个类要继承Ref才行

修改LuaBasicConversions文件,添加自己的自定义类型