C++ 使用tolua和x2B公开Ogre函数+;

C++ 使用tolua和x2B公开Ogre函数+;,c++,lua,ogre3d,C++,Lua,Ogre3d,我想知道如何公开Ogre库函数,例如:俯仰、偏航以旋转相机。我想使用lua脚本为我的应用程序控制相机。我正在使用tolua++进行绑定。我为OrCraceM.H创建了一个清洗头,但是显然这个函数没有被公开,因为当我在C++代码中使用LuaiAube时,程序用退出代码1终止。 在我的lua脚本中,我编写了语句pMyCam:yaw(angle),其中pMyCam的类型为Ogre::Camera*,并传递给lua。有问题的语句是对yaw的调用 现在有一些库允许直接访问C库中的函数 例如: 你想要

我想知道如何公开Ogre库函数,例如:俯仰、偏航以旋转相机。我想使用lua脚本为我的应用程序控制相机。我正在使用tolua++进行绑定。我为OrCraceM.H创建了一个清洗头,但是显然这个函数没有被公开,因为当我在C++代码中使用LuaiAube时,程序用退出代码1终止。 在我的lua脚本中,我编写了语句pMyCam:yaw(angle),其中pMyCam的类型为Ogre::Camera*,并传递给lua。有问题的语句是对yaw的调用


现在有一些库允许直接访问C库中的函数

例如:

你想要的是,至少我现在基本上就是在用食人魔。它的语法非常简单,几乎可以公开所有内容,包括重载方法、只读属性、枚举等等,对我来说效果非常好

我在一个包装器引擎中使用它,它包括Ogre、CEGUI(如果你也使用它的话)和其他一些东西。到目前为止,我成功地向Lua展示了我需要的几乎所有东西,包括相机、场景和对象管理


是的,它是用C++来设计的。< /P>我们需要更多的信息来继续。导致崩溃的Lua脚本是什么?崩溃发生在哪里(在C++代码中)?C++代码:LuaaWAL(Luavm,2.0);这就是崩溃发生的地方。它调用lua函数RotateCam(pMyCam,angle),其中pMyCam是Ogre::Camera类型,angle是double类型。lua脚本包含:函数RotateCam(pMyCam,angle),其中包含语句pMyCam:yaw(angle)。如果我调用我创建的类的函数,那么它工作,但如果我调用库特定函数,它就不起作用。我不太了解外星人(或者它使用的LBFFI),但是LujITFFI也与C++一起工作。你链接到的页面说:“FFI库允许调用外部C函数并使用纯Lua代码中的C数据结构。”你最多可以说,如果C++数据结构编译成C,你可以使用它,但是它肯定不能用C函数工作,而不是没有<代码>外“C”< /代码>。任何形式的FFI都是基于通用ABI工作的,C++的ABI不是交叉编译器。名字的模糊等等是编译器特定的,因此不能与C语言的方式普遍链接。所以我有办法在Oracle函数中使用我的Lua脚本,以便我可以在C++代码中使用它们吗?它是很好的,如果我写包装这些功能,但我想尽量减少C++代码,从来没有真正尝试过,但在我看来,使用这些图书馆,这当然是可能的。但是,如果我说你想用Lua一起绑定2个C++库,我是对的吗?那么,把它们链接在一起就像一个通常包含C++代码的库,这不是更合理吗?我不想把2个C++库绑定在一起。我所要做的就是调用C++库函数,就像我调用用户定义函数一样。因为当我调用我创建的类成员函数时,它工作得很好。但是,对于库函数,我不能做完全相同的事情。我不知道为什么。