我已经挣扎了很长一段时间。每当我尝试在luabind中定义一个类时,我都会得到一个断言失败
assert( id < local_id_base ) in inheritance.hpp (luabind)我已经尝试了很多不同的luabind分支,但都没有成功。尽管它们都是用boost 1.53和Visual Studio 2012编译的。同样使用lua 5.2.1
这是我使用的代码,只是为了
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
#include <luabind/luabind.hpp>
#include <luabind/class.hpp>
#include <luabind/function.hpp>
#include <luabind/object.hpp>
class TestStruct
{
public:
TestStruct(const std::string& s): m_string(s) {}
void printmsg() { printf("Works"); };
private:
int i;
std::string m_string;
};
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
lua_State* L = luaL_newstate();
luaopen_io (L);
luaopen_base(L);
luaopen_table(L);
luaopen_string(L);
luaopen_math(L);
using namespace luabind;
open(L);
module(L)
[
class_<TestStruct>("TestStruct")
.def(constructor<const std::string&>())
.def("printmsg", &TestStruct::printmsg)
];
lua_close(L);
return 0;
}已解决
在四处阅读之后,我几乎一无所获。所以我所做的就是在同一个项目中构建LuaBind和Lua5.2.2,创建一个库而不是两个独立的库。
发布于 2013-06-04 04:14:59
您的类是本地的,因此对LuaBind的模板是不可见的。将类移出main()。
如果这样还不能解决问题,请检查是否正确构建了LuaBind - http://www.ogre3d.org/forums/viewtopic.php?f=2&t=75829
https://stackoverflow.com/questions/16898699
复制相似问题