extern "C" { #include #include #include } #include #ifdef _DEBUG #pragma comment(lib,"lua_d.lib") #pragma comment(lib,"lualib_d.lib") #else #pragma comment(lib,"lua.lib") #pragma comment(lib,"lualib.lib") #endif #include class Vector2D { float m_fX; float m_fY; public: Vector2D(float fX = 0.f, float fY = 0.f) : m_fX(fX), m_fY(fY) {} virtual ~Vector2D() {} void print() { printf("%f, %f\n", m_fX, m_fY); } }; void greet() { printf("bonjour\n"); } // luabindのサンプルから流用 bool dostring(lua_State* L, const char* str) { if (luaL_loadbuffer(L, str, std::strlen(str), str) || lua_pcall(L, 0, 0, 0)) { const char* a = lua_tostring(L, -1); printf("%s\n", a); lua_pop(L, 1); return true; } return false; } int main() { lua_State* L = lua_open(); lua_baselibopen(L); luabind::open(L); luabind::module(L) [ luabind::def("greet", greet), luabind::class_("Vector2D") .def(luabind::constructor()) .def("print", &Vector2D::print) ]; dostring(L, "greet()\n" "a = Vector2D(10, 20)\n" "a:print()\n" ); return 0; }