【发布时间】:2010-12-29 19:09:29
【问题描述】:
我正在尝试使用 LuaBind 将一个简单的类导出到 Lua。我从两个站点获取了代码,它们显示了大致相同的方法,但仍然失败。
// Default headers
#include <iostream>
#include <string>
// Lua headers
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include "luabind/luabind.hpp"
// Sample class
class NumberPrinter
{
public:
NumberPrinter( int number ) : m_number( number ) {}
void print() { std::cout << m_number << "\n"; }
private:
int m_number;
};
int main() {
// Create Lua state and load sample file
lua_State *luaState = lua_open();
luabind::open( luaState );
// Set up bind to number class
luabind::module( luaState ) [
luabind::class_<NumberPrinter>( "NumberPrinter" )
.def( luabind::constructor<int>() )
.def( "print", &NumberPrinter::print )
];
// Use the class in Lua
luaL_dostring( luaState,
"Print2000 = NumberPrinter(2000)\n"
"Print2000:print()\n"
);
// Clean up Lua state
lua_close( luaState );
getchar();
return 0;
}
运行该代码时,luabind::module 会导致以下运行时错误,并且在调试模式下没有其他信息:
在 0x690008f5 处未处理的异常 Lua Playground.exe:0xC0000005:访问 违规。
【问题讨论】:
标签: c++ class lua export luabind