在 LuaBridge 中注册一个类的函数,然后通过 lua 脚本调用它?
Registering a class' function in LuaBridge, then calling it via a lua script?
每当我运行程序时,它都不会向控制台打印任何内容。如果我不使用类,只在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脚本"test.loa"
我试过
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!")
有三个选项可以执行您想要的操作:
-
如果你想在lua中构造一个
myClass
实例,并像第一个例子一样使用它,你还需要在beginClass
:之后导出一个构造函数.addConstructor <void (*) (void)> ()
-
在C++中构造一个
myClass
实例,然后使用其他函数将其传递给lua。然后lua可以访问它,比如:myClassInstance:printMessage("Hello")
-
使
printMessage
为静态,并使用以下命令导出:.addStaticFunction("printMessage", &myClass::printMessage)
然后你可以在lua中使用:
myClass.printMessage("Hello")
请注意调用中.
和:
之间的差异。CCD_ 11像静态一样访问,CCD_。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- boost::asio如何生成多个协同程序,然后加入它们
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 在std::thread中,joinable()然后join()线程安全吗
- C++Lua用户数据扰乱了Mathfu浮点值
- C++:如何读取分离变量,然后读取向量
- 为什么我的递归函数按降序打印,然后按升序打印?
- 等待整个 omp 块完成,然后再调用第二个函数
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 使用 LuaBridge 或 Lua 将对象传递给 Lua 函数C++
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何使变量从 x 到 y,然后从 y 返回到 x 并始终重复该过程
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 如何正确地推回然后遍历堆中对象的向量?
- 如何在C++中获取lua函数作为参数,然后调用它
- 在 LuaBridge 中注册一个类的函数,然后通过 lua 脚本调用它?
- 编译lua代码,存储字节码,然后加载并执行它