每当我运行程序时,它都不会向控制台打印任何内容。 如果我不使用类并在main()中完成所有操作,这样就可以了。
我把它放在课堂上的那一刻,我开始遇到问题。 我做错了什么?
using namespace luabridge;
myClass::myClass()
{
lua_State* L = luaL_newstate();
luaL_openlibs(L);
getGlobalNamespace(L).beginClass<myClass>("myClass").addFunction("printMessage", &myClass::printMessage).endClass();
luaL_dofile(L, "test.lua");
lua_pcall(L, 0, 0, 0);
}
void myClass::printMessage(const std::string& s)
{
std::cout << s << std::endl;
}
我的lua脚本&#34; test.lua&#34;
我已经尝试了
c = myClass()
c:printMessage("You can call C++ functions from Lua!")
和
myClass:printMessage("You can call C++ functions from Lua!")
和
printMessage("You can call C++ functions from Lua!")
答案 0 :(得分:0)
有三种选择可以做你想做的事:
如果你想在lua中构建一个myClass
实例,并像第一个例子一样使用它,你还需要在beginClass
之后导出一个构造函数:
.addConstructor <void (*) (void)> ()
在C ++中构造一个myClass
实例,然后使用其他函数将其传递给lua。然后lua可以访问它:
myClassInstance:printMessage("Hello")
将printMessage
设为静态,并使用以下内容导出:
.addStaticFunction("printMessage", &myClass::printMessage)
然后你可以使用:
在lua中调用它 myClass.printMessage("Hello")
请注意调用中.
和:
之间的区别。 .
访问类似静态和:
访问,如实例。