Как бы я сделал C-функцию, которую я могу вызывать из Lua? - PullRequest
4 голосов
/ 16 ноября 2010

Я хотел бы знать, как создать C-функцию и иметь возможность сообщить об этом Lua, а затем вызвать ее из Lua. На моем компьютере Mac OSX 10.4 установлены все библиотеки Lua.

Ответы [ 3 ]

7 голосов
/ 16 ноября 2010

Отличный пример интеграции Lua-C здесь и здесь .

Если вам просто нужно экспортировать функцию в глобальное пространство имен, то:

  1. Объявить функцию (назовем ее f) с подписью lua_CFunction.
  2. Вызов lua_register(L, "myfunc", f), где L - это состояние Lua, а функция = f.
  3. Запустите код lua.Тогда f будет доступно в глобальном пространстве имен как myfunc.

Если вы собираетесь использовать стандартный интерпретатор, то вы можете создать библиотеку. Этот парень написал статью для Lua Programming Gems , в которой объясняется, как это сделать.Источники доступны онлайн.

2 голосов
/ 16 ноября 2010

Мой ответ здесь включает в себя хороший, короткий пример о создании очень простой игры, использующей C и Lua вместе.По моему предвзятому мнению, это отличная отправная точка.

2 голосов
/ 16 ноября 2010

Вы можете зарегистрировать функции, используя luaL_register

Посмотрите на некоторые примеры и объяснения в PiL

...