lua53.pas подключить в лазарус
Модератор: Модераторы
lua53.pas подключить в лазарус
Здравствуйте, я новичок в этом деле. У меня macos и установлен Lazarus. Теперь мне нужно подключить Lua53 к проекту. Я скачал Lua4Lazarus https://github.com/malcome/Lua4Lazarus в папку /Developer/lazarus. В ней есть lua53.pas. Как мне теперь довести до конца это подключение? Подскажите пожалуйста. И как проверить правильность подключения? Спасибо большое
https://github.com/malcome/Lua4Lazarus/ ... ag/R150205
Добавлено спустя 23 минуты 53 секунды:
В смысле, загрузите библиотеку lua53.dll и киньте её в windows/system32 (это для Win XP).
В других системах - кидайте в нужные места, чтобы операционка видела lua53.dll.
Грузите пример из папки примеров и ... собственно всё.
Добавлено спустя 23 минуты 53 секунды:
В смысле, загрузите библиотеку lua53.dll и киньте её в windows/system32 (это для Win XP).
В других системах - кидайте в нужные места, чтобы операционка видела lua53.dll.
Грузите пример из папки примеров и ... собственно всё.
sign
И чего он будет делать вендовой .dll в этой экзотике?
Василий писал(а): У меня macos
И чего он будет делать вендовой .dll в этой экзотике?
В общих принципах это понятно. Но куда и что кидать ? Если у меня не windows.
Василий писал(а):Как мне теперь довести до конца это подключение?
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 просто положить рядом с исполняемым файлом... хотя имеет смысл установить его в систему.
Если я создаю новые проекты либо Application либо Console Program, тогда у меня создаются файлы с расширениями .lpr, .lpi и для некоторых еще и unit создаются, а расширения .app нет. Есть просто в корне project.app. Я открыл этот проект и сделал данные шаги:
1.,
2) из архива интересует только liblua53.dylib
3) зайти в bundle-приложения (project1.app?), в нём есть папка Contents. Зайти в неё. В ней создать папку Frameworks, в эту папку скопировать liblua53.dylib.
но получаю ошибку
далее я получаю ошибку Хотя раньше компилировалось хорошо, даже форма пустая запускалась.
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 test2) из архива интересует только 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..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-битку пока лень
Заметка .app. это не сам проект, это лишь "бандл", т.е. директория для хранения приложения и его ресурсов.
В неё ничего кроме .dylib класть не нужно.
Добавлено спустя 21 час 25 минут 20 секунд:
а нифига, не всё так просто как "скачать библиотеку".
Проблема в том, что библиотека на сайте исключительно 64-битная. (при том что OSX вполне нормально поддерживает 32+64 битные библиотеки). А значит в связке с Carbon-ом она не заработает.
Придётся либо собирать под 64 бита (Cocoa), либо собирать 32-битную вручную.
Вручную, означает, что придётся править make файл. Как указано здесь, но опять же не доконца подходит
Добавлено спустя 11 часов 33 минуты 43 секунды:
Описал, как быстро подключить к 64-битному приложению
дописывать про 32-битку пока лень
Не пробовал в линуксе и макоси но обычные DLL прекрасно работают если лежат в одной папке с EXE-шником !
Зачем их куда-то еще копировать ?
Зачем их куда-то еще копировать ?
Alex2013 писал(а):Не пробовал в линуксе и макоси но обычные DLL прекрасно работают если лежат в одной папке с EXE-шником !
Зачем их куда-то еще копировать ?
Так правила такие для OSX GUI приложений. (Стоит заметить, что на OSX обычные смертные пользователи сами .exe файлы в глаза не видят)
Сам факт того, что .exe подгружает .dll-ку, которая лежит в той же папке с .exe-ником "дарован" самой Виндой. Описан здесь (Desktop Applications)
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Alex2013 писал(а):Зачем их куда-то еще копировать ?
Дело в том, что библиотека может использоваться несколькими программами. А так как (в общем случае) путь к ней неизвестен, то заводят специальную папку(ки) где они складируются. В противном случае, пришлось бы заводить (и запускать!) несколько версий библиотеки из разных мест.
