Я пытаюсь экспортировать простой класс в Lua, используя LuaBind. Я взял код с двух сайтов, который показал примерно одинаковый способ сделать это, но он все еще не работает.
// 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: Доступ
нарушение.