Объединение дополнительных библиотек Lua для встроенной и статически связанной среды выполнения Lua - PullRequest
2 голосов
/ 12 февраля 2012

Я встроил Lua на Win32 в свой проект посредством статического связывания (нет, я не могу переключиться на DLL). Я хотел бы связать больше расширений Lua, которые используют нативный код, а не только чистые файлы .lua. В частности, я хочу связать winapi Стива Донована, который поставляется в виде нескольких файлов lua и некоторых файлов .c.

Как это сделать?

1 Ответ

3 голосов
/ 12 февраля 2012

Вам нужно сделать две вещи. Во-первых, вы должны скомпилировать проекты Lua DLL в не-DLL проекты. Поскольку они предназначены для использования в качестве модулей DLL, они, вероятно, не будут предусматривать это в своих системах сборки. Это означает, что вы должны сделать это самостоятельно. Избавьтесь от основных функций DLL и других специализированных функций DLL (но обратите внимание на то, что они делают, и убедитесь, что вы скопировали его, если это важно). И убедитесь, что вы изменили все #defines, которые пытаются включить Lua с динамическим связыванием.

Все библиотеки модулей Lua экспортируют одну или несколько функций вида luaopen_*, где * - имя загружаемого модуля. Эта функция, скорее всего, будет украшена нотацией declspec(). Обычно нотация выполняется с помощью макроса препроцессора, но это не так. В любом случае удалите его, превратив в обычное объявление функции.

Теперь, когда вы создали объект lua_State, просто вызовите эту функцию luaopen_* с помощью lua_State.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...