Исток-Системы - Форумы
Поддержка пользователей программных продуктов и библиотек

Подключение библиотек в Lispworks

Начать новую тему Новая темаОтветить в тему Ответить    
Зарегистрирован 31 окт 2013
Сообщений 8
Сообщение Дата 31 окт 2013 10:26
Подключение библиотек в Lispworks  
Начинаю осваивать CommonLisp и Lispworks. С теми примерами, которые в
документации, никаких проблем не возникает - все работает. А вот захотел
поэкспериментировать, загрузил примерчик с Вашего сайта (ex-1251), и
компилятор говорит, что не может найти пакет "PDF". Библиотеку CL-PDF я
скачал и поместил в \LispWorks Personal\lib\. Путь до нее прописал в
системной переменной path, но результат тот же. Может в коде нужно что
то еще прописать?
     
Показать профиль участника
Администратор
Зарегистрирован 11 окт 2011
Сообщений 34
Сообщение Дата 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 КБ) Скачиваний: 1870

     
Показать профиль участника
Зарегистрирован 31 окт 2013
Сообщений 8
Сообщение Дата 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? Можно поподробнее.
     
Показать профиль участника
Администратор
Зарегистрирован 11 окт 2011
Сообщений 34
Сообщение Дата 31 окт 2013 18:40
Подключение библиотек в Lispworks  
Версия с fractalconcepts требует ещё библиотеки ITERATE. В версии для себя я от неё избавился, переписав код через LOOP, но Вам лучше выкачать ITERATE.и загружать её перед CL-PDF,

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

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

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

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

Я так понимаю, она из файла cl-pdf.asd. Грузите ли Вы это файл целиком? Или оцениваете построчно?
     
Показать профиль участника
Зарегистрирован 31 окт 2013
Сообщений 8
Сообщение Дата 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, то ошибка как в предыдущем случае.
     
Показать профиль участника
Администратор
Зарегистрирован 11 окт 2011
Сообщений 34
Сообщение Дата 01 ноя 2013 10:07
Подключение библиотек в Lispworks  
Вообще, файлы определения систем обычно не компилируют, а только загружают в исходном виде. По-видимому, при компиляции и загрузке буфера, связь с файлом теряется.

Что касается оценивания отдельной строчки, это проблемы с iterate. Возможно определние делается не в том пакете. Често говоря, проблемы iterate мне не интересны :-(
     
Показать профиль участника
 
Начать новую тему Новая тема Ответить в тему Ответить
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
cron