There are a number of ways and 3rd party libraries which you use to acheive a C++ and Lua binding.
The simplest is Lunar which is
documented on the Lua user wiki.
Swig, although I have seen numerous reports on the mailing list of problems with it when using Lua.
Luaplus, yet this uses a modified version of Lua.
LuaBind uses metaprogramming and Boost to create a binding.
MLuaBind which seeks to do the same as LuaBind yet without the dependency on Boost, instead using the
Loki library.
CppLua which I have no real knowledge about.
toLua, which like swig uses a precompilation pass to generate a binding.
SqPlus is a binding which uses a modified Lua called
Squirrel which was designed for games by a professional games developer.
CPB which only works with windows using the debug symbols IIRC.
In addition to these I have a binding of my own, yet it is currently broken which multiple inheritance (I really should fix it
)