lua53.pas подключить в лазарус

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

lua53.pas подключить в лазарус

Сообщение Василий » 27.12.2015 21:06:26

Здравствуйте, я новичок в этом деле. У меня macos и установлен Lazarus. Теперь мне нужно подключить Lua53 к проекту. Я скачал Lua4Lazarus https://github.com/malcome/Lua4Lazarus в папку /Developer/lazarus. В ней есть lua53.pas. Как мне теперь довести до конца это подключение? Подскажите пожалуйста. И как проверить правильность подключения? Спасибо большое
Василий
незнакомец
 
Сообщения: 3
Зарегистрирован: 27.12.2015 21:00:42

Re: lua53.pas подключить в лазарус

Сообщение sign » 28.12.2015 10:01:55

https://github.com/malcome/Lua4Lazarus/ ... ag/R150205

Добавлено спустя 23 минуты 53 секунды:
В смысле, загрузите библиотеку lua53.dll и киньте её в windows/system32 (это для Win XP).
В других системах - кидайте в нужные места, чтобы операционка видела lua53.dll.
Грузите пример из папки примеров и ... собственно всё.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: lua53.pas подключить в лазарус

Сообщение SSerge » 28.12.2015 12:17:30

sign
Василий писал(а): У меня macos


И чего он будет делать вендовой .dll в этой экзотике?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: lua53.pas подключить в лазарус

Сообщение Василий » 28.12.2015 12:21:44

В общих принципах это понятно. Но куда и что кидать ? Если у меня не windows.
Василий
незнакомец
 
Сообщения: 3
Зарегистрирован: 27.12.2015 21:00:42

Re: lua53.pas подключить в лазарус

Сообщение скалогрыз » 28.12.2015 17:38:05

Василий писал(а):Как мне теперь довести до конца это подключение?

1)
а проект собирается? потому что не должен, ибо lua53.pas довольное ограничен в смысле поддержки систем:
Код: Выделить всё
{$IFDEF MSWINDOWS}
   LUA_LIB_NAME = 'lua53.dll';
{$ELSE}
   LUA_LIB_NAME = 'liblua53.so';
{$ENDIF}

Т.е. поддерживается только динамическая загрузка, и только для Винды или Linux-а.
На Макоси динамические библиотеки имеют расширение .dylib, либо линукуются уже как framework-и

Т.е. вышеуказанный код нужно переписать на
Код: Выделить всё
{$IFDEF MSWINDOWS}
   LUA_LIB_NAME = 'lua53.dll';
{$ELIF DARWIN}
   LUA_LIB_NAME = 'liblua53.dylib';
{$ELSE}
   LUA_LIB_NAME = 'liblua53.so';
{$ENDIF}

и автору отправить патч.

2) Почему-то на официальном сайте, упоминается, что уже всё готово и допольнительно библиотеки в систему ставить не нужно.
If you use Linux or Mac OS X, Lua is either already installed on your system or there is a Lua package for it.

Сам это утверждение не проверял. Если это так, то ниже перечисленные шаги по установке не нужны.

Но если библиотеки в системе нет, то:
1) её нужно скачать, скажем здесь. Интересует архив lua-5.3.2_MacOS1011_lib.tar.gz
2) из архива интересует только liblua53.dylib
3) зайти в bundle-приложения (project1.app?), в нём есть папка Contents. Зайти в неё. В ней создать папку Frameworks, в эту папку скопировать liblua53.dylib. Примерно так
./project1.app/Contents/Frameworks/liblua53.dylib

"project1.app" это папка bundla. Её имя зависит от имени проэкта. Т.е. если проект называется myproject, то соответственно и папка будет "myproject.app"

После этого должно заработать.

Если приложение без графического интерфейса, а просто утилита командной строки, то .dylib просто положить рядом с исполняемым файлом... хотя имеет смысл установить его в систему.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: lua53.pas подключить в лазарус

Сообщение Василий » 28.12.2015 18:01:00

Если я создаю новые проекты либо Application либо Console Program, тогда у меня создаются файлы с расширениями .lpr, .lpi и для некоторых еще и unit создаются, а расширения .app нет. Есть просто в корне project.app. Я открыл этот проект и сделал данные шаги:
1.
Код: Выделить всё
curl -R -O http://www.lua.org/ftp/lua-5.3.2.tar.gz
tar zxf lua-5.3.2.tar.gz
cd lua-5.3.2
make macosx test
,
2) из архива интересует только liblua53.dylib
3) зайти в bundle-приложения (project1.app?), в нём есть папка Contents. Зайти в неё. В ней создать папку Frameworks, в эту папку скопировать liblua53.dylib.

но получаю ошибку
Код: Выделить всё
While executing the command:
"TGDBMIDebuggerInstruction: "-file-exec-and-symbols ", "
gdb reported:
"&"solib-target.c:330: internal-error: void solib_target_free_so(struct so_list *): Assertion `so-

далее я получаю ошибку
Код: Выделить всё
The GDB command:
"-file-exec-and-symbols "
did not return any result.

The GDB process is no longer running.
Хотя раньше компилировалось хорошо, даже форма пустая запускалась.
Василий
незнакомец
 
Сообщения: 3
Зарегистрирован: 27.12.2015 21:00:42

Re: lua53.pas подключить в лазарус

Сообщение скалогрыз » 28.12.2015 22:38:15

.app создасться для проэктов "Application". А точнее когда галочка "Use Application Bundle for running and debugging", или если принудительно нажать "Create Bundle".

Заметка .app. это не сам проект, это лишь "бандл", т.е. директория для хранения приложения и его ресурсов.
В неё ничего кроме .dylib класть не нужно.

Добавлено спустя 21 час 25 минут 20 секунд:
а нифига, не всё так просто как "скачать библиотеку".
Проблема в том, что библиотека на сайте исключительно 64-битная. (при том что OSX вполне нормально поддерживает 32+64 битные библиотеки). А значит в связке с Carbon-ом она не заработает.
Придётся либо собирать под 64 бита (Cocoa), либо собирать 32-битную вручную.

Вручную, означает, что придётся править make файл. Как указано здесь, но опять же не доконца подходит :)

Добавлено спустя 11 часов 33 минуты 43 секунды:
Описал, как быстро подключить к 64-битному приложению

дописывать про 32-битку пока лень
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: lua53.pas подключить в лазарус

Сообщение Alex2013 » 11.01.2016 13:53:22

Не пробовал в линуксе и макоси но обычные DLL прекрасно работают если лежат в одной папке с EXE-шником ! :idea:
Зачем их куда-то еще копировать ?
Alex2013
долгожитель
 
Сообщения: 3145
Зарегистрирован: 03.04.2013 11:59:44

Re: lua53.pas подключить в лазарус

Сообщение скалогрыз » 11.01.2016 17:55:07

Alex2013 писал(а):Не пробовал в линуксе и макоси но обычные DLL прекрасно работают если лежат в одной папке с EXE-шником ! :idea:
Зачем их куда-то еще копировать ?

Так правила такие для OSX GUI приложений. (Стоит заметить, что на OSX обычные смертные пользователи сами .exe файлы в глаза не видят)

Сам факт того, что .exe подгружает .dll-ку, которая лежит в той же папке с .exe-ником "дарован" самой Виндой. Описан здесь (Desktop Applications)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: lua53.pas подключить в лазарус

Сообщение Лекс Айрин » 12.01.2016 17:38:43

Alex2013 писал(а):Зачем их куда-то еще копировать ?


Дело в том, что библиотека может использоваться несколькими программами. А так как (в общем случае) путь к ней неизвестен, то заводят специальную папку(ки) где они складируются. В противном случае, пришлось бы заводить (и запускать!) несколько версий библиотеки из разных мест.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 228

Рейтинг@Mail.ru