Исток-Системы - Форумы
http://forum.ystok.ru/

Подключение библиотек в Lispworks
http://forum.ystok.ru/viewtopic.php?f=22&t=33

Автор:vladimir
Дата:31 окт 2013 10:26
Заголовок сообщения:Подключение библиотек в Lispworks
Начинаю осваивать CommonLisp и Lispworks. С теми примерами, которые в
документации, никаких проблем не возникает - все работает. А вот захотел
поэкспериментировать, загрузил примерчик с Вашего сайта (ex-1251), и
компилятор говорит, что не может найти пакет "PDF". Библиотеку CL-PDF я
скачал и поместил в \LispWorks Personal\lib\. Путь до нее прописал в
системной переменной path, но результат тот же. Может в коде нужно что
то еще прописать?
Автор:Admin
Дата:31 окт 2013 11:47
Заголовок сообщения:Подключение библиотек в Lispworks
Папка \LispWorks Personal\lib\ не имеет ничего общего в переменной окружения path. Чтобы загрузить CL-PDF, требуется
- развернуть её в собственную папку, куда - не важно,
- загрузить cl-pdf.asd и откомпилировать CL-PDF через ASDF (встроен в версию LW6.1).

В разработке я предпочитаю встроенный в LW defsystem, а ASDF использую только для распространения готовых библиотек. Моё определение системы прилагаюя в виде файла defsys.lisp, который следует поместиь в корень папки, развёрнуты файлы CL-PDF.

Вложения

defsys.lisp
(1.39 КБ) Скачиваний: 4695

Автор:vladimir
Дата:31 окт 2013 16:32
Заголовок сообщения:Подключение библиотек в Lispworks
Admin писал(а):
- загрузить cl-pdf.asd и откомпилировать CL-PDF через ASDF


выдает ошибку "Argument NIL is not of type PATHNAME, STRING, or FILE-STREAM." на строке
(load (merge-pathnames "iterate/iterate.asd" *load-truename*))

Может я не правильно компилирую? Делаю это через команду "компилировать буфер".
Что значит откомпилировать через ASDF? Можно поподробнее.
Автор:Admin
Дата:31 окт 2013 18:40
Заголовок сообщения:Подключение библиотек в Lispworks
Версия с fractalconcepts требует ещё библиотеки ITERATE. В версии для себя я от неё избавился, переписав код через LOOP, но Вам лучше выкачать ITERATE.и загружать её перед CL-PDF,

По-поводу ASDF и ITERATE см. http://cliki.net/
Автор:vladimir
Дата:01 ноя 2013 02:54
Заголовок сообщения:Подключение библиотек в Lispworks
Библиотека ITERATE присутствует в каталоге \CL-PDF\ITERATE\ изначально, при развертывании CL-PDF.
Может дело в переменной *load-truename*, которая имеет значение NIL?
Автор:Admin
Дата:01 ноя 2013 06:36
Заголовок сообщения:Подключение библиотек в Lispworks
*load-truename* действительно есть NIL, когда оценивание происходит в листенере, ибо с потоком листенера не связан никакой файл.

Но будучи внутри формы загружаемого файла, *load-truename* дает путь к нему. При оценвании отдельной формы в редакторе, вроде Evaluate Region, эта переменная должна иметь значение, если c буфером связан файл, т.е. буфер был загружен или уже сохранен.

Замечу, что вопрос имеет малое отношение к CL-PDF.
Автор:vladimir
Дата:01 ноя 2013 07:00
Заголовок сообщения:Подключение библиотек в Lispworks
Тогда не понятно почему ошибка в выражении
Код:
(load (merge-pathnames "iterate/iterate.asd" *load-truename*))

если файл iterate.asd имеется, путь до него правильный,
компилирую я правильно (через ASDF)?
В чем ошибка?
Конечно, это имеет малое отношение к CL-PDF,
я всего лишь на его примере хочу разобраться с
подключением сторонних библиотек.
Хотя, сама библиотека CL-PDF, тоже, очень интересна.
Автор:Admin
Дата:01 ноя 2013 08:34
Заголовок сообщения:Подключение библиотек в Lispworks
Требуется уточнить, как Вы оцениваете строчку кода
Код:
(load (merge-pathnames "iterate/iterate.asd" *load-truename*))

Я так понимаю, она из файла cl-pdf.asd. Грузите ли Вы это файл целиком? Или оцениваете построчно?
Автор:vladimir
Дата:01 ноя 2013 09:28
Заголовок сообщения:Подключение библиотек в Lispworks
Открываю файл cl-pdf.asd в окне редактора и запускаю "Компилировать буфер",
тогда ошибка
Код:
"Argument NIL is not of type PATHNAME, STRING, or FILE-STREAM."

А если выполнить одну строку
(load (merge-pathnames "iterate/iterate.asd" *load-truename*))
в том же редакторе, то ошибка другая
Код:
syntax error in (DEFSYSTEM :ITERATE :COMPONENTS ((:FILE
"package") (:FILE "iterate" :DEPENDS-ON #))):
Unpaired keyword in (DEFSYSTEM :ITERATE :COMPONENTS ((:FILE
"package") (:FILE "iterate" :DEPENDS-ON #)))

Если загружать файл cl-pdf.asd через команду load, то ошибка как в предыдущем случае.
Автор:Admin
Дата:01 ноя 2013 10:07
Заголовок сообщения:Подключение библиотек в Lispworks
Вообще, файлы определения систем обычно не компилируют, а только загружают в исходном виде. По-видимому, при компиляции и загрузке буфера, связь с файлом теряется.

Что касается оценивания отдельной строчки, это проблемы с iterate. Возможно определние делается не в том пакете. Често говоря, проблемы iterate мне не интересны :-(
стр. 1 из 2 Часовой пояс: UTC + 3 часа
Разработка сайта Исток-Системы (www.ystok.ru) | Powered by phpBB (www.phpbb.com)