думаю, достаточно реализовать всего лишь одну доступную для пользователя функцию - что-то вроде lib_load, на вход которой подаётся имя библиотеки, а возвращать она будет таблицу функций (которые на самом деле-то являются указателями на определённый код, так что ничего сложного не должно быть). но вот как из lua такие функции вызывать - вопрос, не знаю проверяет ли интерпретатор количество и тип параметров... и насчёт передачи параметров - думаю, lua использует stdcall, так что надо и это учесть.
насчёт кода импорта функций из динамических библиотек:
http://redmine.kolibrios.org/projects/k ... /kolibri.c
строки 235-285
Порт LUA (5.2.0)
У луа своя система вызовов.Я посмотрю на код разных библиотек и подумаю,что с ним делать.А еще посмотрю на код поддержки библиотек в самой луа.Но займусь этим не скоро.Еще много работы над шрифтами
1) Баг повторить не удается. Оба варианта у меня работают замечательно с рамдрайва на ядре 1739, и на том же ядре не работают нормально с жесткого диска (так и должно быть). С новым ядром работает отовсюду. Может, дело в какой-то ошибке файловой системы?Eruman wrote:Для новичков:
Пока вопросы копятся. Запустил Lua, пример с таблицей вылетает с символом #, только номер строки другой. Стал исключать строки для поиска ошибки.
Еще непонятно, скармливаю выражение :
i[1] = 1
Прога вылетает без сообщений об ошибке на доске. Так и должно быть?
2) У меня выводится сообщение об ошибке на доску. В lua нужно инициализировать таблицы. Вот так:
Code: Select all
i={}
i[1]=1
Есть какие-либо новости в работе над Lua?
Возможно скоро сделаю луа 5.2b8 или какой там последний.Что делать с библиотеками-так и не придумал.Заявок на перенос функций системы в стандартную библиотеку не поступало.
может сделать модуль kolibri. ?
например kolibri.window_new(x, y, height, width) ?
например kolibri.window_new(x, y, height, width) ?
Пробовал. Разницы никакой. Если посмотреть на разные расширения для lua, то добавление системных функций в основную библиотеку - обычная практика.XVilka wrote:может сделать модуль kolibri. ?
например kolibri.window_new(x, y, height, width) ?
А по поводу обертки - возможно загружать динамически функции в луа. см. C API - просто пропихивать в стек имена функции и указатели на них, а также параметры
Last edited by XVilka on Fri Jul 22, 2011 12:53 am, edited 1 time in total.
Блин, точно ведь. Как сразу до меня не дошло
Сложновато будет с типами данных только.
Сложновато будет с типами данных только.
по поводу динамической загрузки библиотек - советую посмотреть в сторону luaffi или libffi http://luajit.org/ext_ffi.html
Lua 5.2.0
Теперь официально.
Добавлены команды ввода-вывода через консоль:
Пример программы:
Теперь официально.
Добавлены команды ввода-вывода через консоль:
Code: Select all
copen() - открыть окно консоли
cclose() - закрыть окно консоли
cprintf() - вывести на экран что-нибудь
cgets() - считать строку с клавиатуры
Code: Select all
copen()
cprintf("Hello! What is your name?\n")
name=cgets()
cprintf("Nice to meet you, ",name,"!\n")
a=3
b=2
c=a+b
cprintf("I know: a+b=",c,"\n")
cclose()
- Attachments
-
-
lua-5.2.0.7z (96.92 KiB)Downloaded 513 times
-
Лучше перенести эти команды в в модуль "console" или "os" или подобное, так будет больше совместимости и идеологически правильнее.
Когда я это делал, я вообще не представлял, как модули делать. Сейчас чуть лучше представляю. Так что возможно вообще уберу эти функции и добавлю нормальный вызов библиотек и ассемблерных вставок (о_О, да!)
Еще очень полезный модуль есть - lpreg (содержит также модуль re), для работы с паттернами и подобием регулярных выражений, написан на си, можно включить в сборку для колибри
Вроде я уже выкладывал - не нашел. В архиве исходники и скрипт для сборки compile.sh.
- Attachments
-
-
lua-5.2.0-src.7z (497.53 KiB)Downloaded 457 times
-
Who is online
Users browsing this forum: No registered users and 3 guests