Вопросы по использованию FFI
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Вопросы по использованию FFI
FFI — одна из стандартных библиотек luajit.
Позволяет из Lua кода вызывать внешние C-функции и использовать структуры данных C.
В данной теме задаём вопросы по использованию FFI
Заготовка для документации: viewtopic.php?f=57&t=8418&p=147610#p147610
Примеры готовых скриптов:
Предупреждение: viewtopic.php?p=147610#p147610
Позволяет из Lua кода вызывать внешние C-функции и использовать структуры данных C.
В данной теме задаём вопросы по использованию FFI
Заготовка для документации: viewtopic.php?f=57&t=8418&p=147610#p147610
Примеры готовых скриптов:
Предупреждение: viewtopic.php?p=147610#p147610
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: luajit в фаре
Не личное.John Doe wrote:После MacroLoadAll выдаёт ошибку ...pps\far3\Profile\Macros\modules\ljsqlite3\_ljsqlite3.lua:97: ';' expected near '='Shmuel wrote:Скрипт в предыдущем посте обновлён (был уж совсем плохой).
Больше обновляться не будет, т.к. это всего лишь "демо".
И больше не работает.
Это у меня личное?
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: luajit в фаре
Начиная со следующей ночной сборки, подобные проблемы будут лечиться таким образом (подробнее - в macroapi_manual):John Doe wrote:После MacroLoadAll выдаёт ошибку ...pps\far3\Profile\Macros\modules\ljsqlite3\_ljsqlite3.lua:97: ';' expected near '='
Code: Select all
package.nounload.ljsqlite3 = true
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Вопросы по использованию FFI
А что происходит при ffi.cdef, почему повторный вызов приводит к ошибке?
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: luajit в фаре
LuaJIT FFI рассматривает переопределение статических констант и enum'ов как ошибку. На повторное определение функций почему-то не жалуется.John Doe wrote:А что происходит при ffi.cdef, почему повторный вызов приводит к ошибке?
Почему сообщение было такое невнятное, не анализировал.
В своих библиотеках можно перед вызовом ffi.cdef проверить, определена ли та или иная константа.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Использование FFI
а вот такой код как-то упростить можно?
задача строку в utf8 преобразовать в wchar_t*.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Ликбез по Lua
Нашёл у себя такие (не связанные друг с другом) куски кода: (Но я пока пользуюсь FFI лишь эпизодически).zg wrote:а вот такой код как-то упростить можно?
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Ликбез по Lua
new обнуляет выделенную память, поэтому конечный ноль в моём коде не нужен. про cast читал, но не очевидно что так можно.
а wchar_t* -> string как-нибудь по простому можно?
или так — нормально:
а wchar_t* -> string как-нибудь по простому можно?
или так — нормально:
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Ликбез по Lua
Вот код, откуда это взято, он работает.zg wrote:про cast читал, но не очевидно что так можно.
Например: А kernel32 вроде незачем, скорее всего эта библиотека входит в число тех, которые не надо явно загружать.а wchar_t* -> string как-нибудь по простому можно?
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Ликбез по Lua
Это неудивительно, т.к. переменная text становится мусором при выходе из функции и, следовательно, может быть собрана сборщиком мусора. (Но я так делать ни разу не советовал. )zg wrote:так тот же самый код — рандомно:
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Ликбез по Lua
ну изначально у меня так было: результат тот же.Shmuel wrote:Это неудивительно, т.к. переменная text становится мусором при выходе из функции и, следовательно, может быть собрана сборщиком мусора. (Но я так делать ни разу не советовал. )
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Ликбез по Lua
Приведи пример, который можно повторить, иначе это - голословное утверждение.zg wrote:ну изначально у меня так было: результат тот же.
А возможно, что просто не хватает "завершающего" нуля.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Ликбез по Lua
ну отчего ж сразу голословное?Shmuel wrote:Приведи пример, который можно повторить, иначе это - голословное утверждение.
а вот так, да, работает:А возможно, что просто не хватает "завершающего" нуля.