Forget swig. Have you seen luajit new ffi library? If you think Lua's C interface is simple, you're gonna be blown out of your mind with luajit's:
local ffi = require("ffi")
ffi.cdef[[
int printf(const char *fmt, ...);
]]
ffi.C.printf("Hello %s!", "world")