CSLua


CSLua is a pure C# library for interfacing to the Lua 5.1 Windows DLL. It supports the core Lua API and includes a C# class wrapper for using C# objects from Lua script. I built this for fun to learn more about Lua and C# and thought I would share it.

UPDATE:
The code is now available on GitHub.

Lua Binaries can be downloaded from luabinaries
Lua Binaries Download

Documentation about Lua
Lua Reference Manual

lib/CSLua/LuaDLL.cs contains the marshalling definitions to the standard Lua API.

lib/CSLua/LuaState.cs is a class wrapper for a lua state and an API for registering C# objects and functions with Lua.

samples/CSLuaSampleApp/MainWindow.xaml.cs contains an basic interactive Lua interface with a test suite of C# classes and methods.

samples/test/data/test.lua contains a Lua script that is designed to stress test the test objects in MainWindow.xaml.cs.

Features:

  • Mostly complete standard Lua C API exposed to C#
  • Some additional features for supporting C# features, such as variable arguments
  • C# class wrapper of lua state
  • Support for registration of C# methods as global Lua functions
  • Support for registration of C# objects, either as global objects or returned from methods
  • Automatic registration of class when objects are registered or returned

Future features:

  • Make Lua tables available to use as native C# objects