我正在尝试使用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:访问 冲突。
答案 0 :(得分:1)
我建议您从this website获取二进制文件和样本VS2008解决方案。它具有您尝试运行的完全相同的示例代码(减去拼写错误),并且它在我的机器上运行良好。如果它仍然不起作用,您将需要Lua社区的帮助。可能需要一个minidump来帮助他们诊断这个,只是异常消息是不够的。