LuaBind を使用して単純なクラスを Lua にエクスポートしようとしています。ほぼ同じ方法を示した 2 つのサイトからコードを取得しましたが、まだ失敗しています。
// 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 によって次のランタイム エラーが発生し、デバッグ モードでは他の情報はありません。
Lua Playground.exe の 0x690008f5 で未処理の例外: 0xC0000005: アクセス違反。