OOLua is a cross-platform, test driven, dependency-free and Open Source
library which uses C++03 template metaprogramming along with preprocessor
magic to provide a fast binding between C++ and Lua.
Although the name of the library is OOLua you do not need to expose C++
classes or use the library in an OO manner; the only hierarchy of classes
that the library defines for itself are exception types when they are
The library provides:
The ability to easily bind stand-alone functions.
Interaction with the stack using a simple typed interface.
Simplified method to call Lua functions from C++.
Ease of configurability.
Error checking either with or without exceptions.
Simple typed Lua registry references.
Interaction with Lua tables using a simple type.
Passing C++ classes and user types as light userdata.
Exposing C++ classes and hierarchies as full userdata without using C++'s RTTI and in a none-intrusive manner.
Abilty to control which language owns which full userdata instances.
Binding member/virtual functions on full userdata.
Binding static functions for full userdata types.
Binding class enumerations.
Binding public members.
Constructors for full userdata classes.
Compatibility with Rio Lua 5.1, 5.2 and 5.3 also LuaJIT 1.1 and 2.0
A guarantee that it does not call new willy-nilly.
Support for shared_ptr.
Support for C++11 scoped enums.
Basically you can use as little or as much of the library as you like.