【发布时间】:2010-03-10 04:21:15
【问题描述】:
我正在使用 SWIG 包装 C++ 对象以在 lua 中使用,并且我试图将数据传递给我的 lua 脚本中的方法,但它始终显示为“nil”
void CTestAI::UnitCreated(IUnit* unit){
lua_getglobal(L, "ai");
lua_getfield(L, -1, "UnitCreated");
swig_module_info *module = SWIG_GetModule( L );
swig_type_info *type = SWIG_TypeQueryModule( module, module, "IUnit *" );
SWIG_NewPointerObj(L,unit,type,0);
lua_epcall(L, 1, 0);
}
这是lua代码:
function AI:UnitCreated(unit)
if(unit == nil) then
game:SendToConsole("I CAN HAS nil ?")
else
game:SendToConsole("I CAN HAS UNITS!!!?")
end
end
单位始终为零。我已经检查并在 C++ 代码中,单位指针永远不会无效/为空
我也试过了:
void CTestAI::UnitCreated(IUnit* unit){
lua_getglobal(L, "ai");
lua_getfield(L, -1, "UnitCreated");
SWIG_NewPointerObj(L,unit,SWIGTYPE_p_IUnit,0);
lua_epcall(L, 1, 0);
}
结果相同。
为什么会失败?我该如何解决?
【问题讨论】:
-
作为旁注,更改代码以便我在 lua 中只有函数 UnitCreated,并对 C++ 代码进行必要的更改,但如果在表中调用函数则不起作用跨度>