Я новичок в Lua и пытаюсь понять некоторые из основ. Что-то, что я хочу понять, является связыванием Lua с экземплярами C++.Lua/C++ привязка с нуля
Я не заинтересован в сторонних библиотек, я хочу, чтобы понять это на более фундаментальном уровне - спасибо :)
Вот мои вопросы:
- Мое предположение основано на том, что я прочитал , заключается в том, что Lua может связываться только со статическими функциями C. Это верно?
- Означает ли это, что для привязки экземпляра класса C++ мне сначала нужно написать статические функции для каждого метода и свойства getter/setter, которые я хочу, принимая указатель экземпляра в качестве параметра.
- Я бы зарегистрировал эти функции с помощью Lua.
- Я передал бы Lua указатель на экземпляр класса C++.
- От Lua я бы назвал одну из зарегистрированных функций, передав указатель экземпляра C++.
- Статическая функция разыгрывает указатель, вызывая эквивалентный метод.
Имеет ли это смысл? Или я сделал что-то неправильно?
Спасибо, что прочитали это.
Связывание разных языков обычно осуществляется через интерфейс C (ABI лучше определен для C). Я не достаточно знаком с lua, чтобы узнать подробности, но мой совет - выбрать библиотечное решение. Вы собираетесь изобретать колесо, и, возможно, нет ничего странного в том, чтобы заставить его быть таким же круглым, как существующие решения.По крайней мере, взгляните на то, что делают эти библиотеки. –
Спасибо, но я специально пытаюсь понять принципы Lua для использования, где я не хочу (не допускается) использовать сторонние библиотеки. Я просмотрел несколько библиотек, но меня интересуют только основные принципы, как это работает, и не могли понять это из библиотек (очень абстрактное, тяжелое чтение). – user1654794
Многие сторонние библиотеки, которые используют привязки Lua-C++, являются open source. Вы всегда можете посмотреть, как они делают вещи, чтобы понять их. * Предостережение emptor * хотя. –