level 2
Irrlicht_虫子
楼主
直接上代码
#include "stdafx.h"
#include <LuaPlus.h>
#include <iostream>
using namespace LuaPlus;
using namespace std;
class MultiObject
{public: MultiObject() { }
int Print(LuaState *state)
{ LuaStack args(state);
if (args[1].IsString())
{ cout<<"args[1].IsString() :"<<args[1].GetString()<<"\n"; return 0; }
else { cout<<5<<"\n"; return 0; } }
};
int _tmain(int argc, _TCHAR* argv[]){
// 创建状态LuaState* state = LuaState::Create();
state->OpenLibs();
LuaObject metaTableobj;
metaTableobj= state->GetGlobals().CreateTable("MultiObjectMetaTable");metaTableobj.SetObject("__index", metaTableobj);metaTableobj.RegisterObjectFunctor("Print", &MultiObject::Print);
MultiObject obj1;
LuaObject obj1obj = state->BoxPointer(&obj1);obj1obj.SetMetaTable(metaTableobj);
state->GetGlobals().SetObject("obj",obj1obj);
int a = state->DoString("obj:Print()");
if (a==0){cout<<"运行成功!"<<"\n";}else{ cout<<"运行失败!"<<"\n";}state->DoString("print(obj)");
getchar();
return 0;
}
编译连接都没有问题,我是照着官网的例子写的怎么就不运行呢。
好像到int a = state->DoString("obj:Print()");运行不了,请问有什么问题啊?
2011年06月09日 10点06分
1
#include "stdafx.h"
#include <LuaPlus.h>
#include <iostream>
using namespace LuaPlus;
using namespace std;
class MultiObject
{public: MultiObject() { }
int Print(LuaState *state)
{ LuaStack args(state);
if (args[1].IsString())
{ cout<<"args[1].IsString() :"<<args[1].GetString()<<"\n"; return 0; }
else { cout<<5<<"\n"; return 0; } }
};
int _tmain(int argc, _TCHAR* argv[]){
// 创建状态LuaState* state = LuaState::Create();
state->OpenLibs();
LuaObject metaTableobj;
metaTableobj= state->GetGlobals().CreateTable("MultiObjectMetaTable");metaTableobj.SetObject("__index", metaTableobj);metaTableobj.RegisterObjectFunctor("Print", &MultiObject::Print);
MultiObject obj1;
LuaObject obj1obj = state->BoxPointer(&obj1);obj1obj.SetMetaTable(metaTableobj);
state->GetGlobals().SetObject("obj",obj1obj);
int a = state->DoString("obj:Print()");
if (a==0){cout<<"运行成功!"<<"\n";}else{ cout<<"运行失败!"<<"\n";}state->DoString("print(obj)");
getchar();
return 0;
}
编译连接都没有问题,我是照着官网的例子写的怎么就不运行呢。
好像到int a = state->DoString("obj:Print()");运行不了,请问有什么问题啊?