Если Alien не соответствует вашим потребностям, и его может быть непросто использовать, если DLL имеет строго объектно-ориентированный интерфейс, где вам нужно получить доступ к элементам и методам объектов, а также просто вызвать экспортированные функции, тогдаВы должны взглянуть на создание DLL-оболочки-оболочки, которая связывает устаревший API-интерфейс с DLL-библиотекой Lua.
Это можно сделать с помощью генератора оболочек, такого как Swig , который также напишет оболочки для Luaкак и многие другие языки сценариев, основанные на объявлениях классов и функций, часто просто принимающих в качестве входных данных чуть больше, чем существующие .h файлы.
Lua также достаточно простой код, для которого может быть проще написать собственную оболочкувручную в C. Чтобы сделать это, начните со стандартного рецепта для создания вызываемого модуля Lua в C и реализуйте функции, которые передают аргументы из стека Lua в форму, подходящую для каждого вызова API, вызывают в DLL и помещают любыерезультаты обратно в стек Lua.Это также место, где можно воспользоваться возможностью Lua возвращать более одного результата для тех функций, которые в DLL должны были использовать выходные указатели для обработки второго (или более) возвращаемого значения. обсуждение вопросов и некоторые примеры кода доступны на вики Lua User.
Также есть страница, посвященная привязке Lua к другим языкам в Lua.Вики пользователя.