Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1

Странная ошибка circular unit reference в Lazarus

15.08.2022, 12:54. Показов 804. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня Lazarus 2.2.2, пытаюсь сконвертировать проект из Delphi. В нём есть например модуль с названием simplefuncs. И когда я нажимаю F9, выдаётся странная ошибка:

Delphi
1
simplefuncs.pas(10,73) Fatal: Circular unit reference between simplefuncs and Forms.
Forms - это стандартный модуль из библиотеки VCL. Я переместил uses Forms из inteface в implementation, ошибка пропала, но возникла ещё более странная ошибка:

Delphi
1
dialogs.pp(10,66) Fatal: Circular unit reference between Dialogs and Forms
Dialogs и Forms - это же стандартные юниты из VCL, как у них могут быть перекрёстные ссылки? Модуль dialogs имеет uses forms, но модуль forms не содержит uses dialogs.
Я обнаружил, что такая ошибка возникает тогда, когда модули моего проекта разбиты по разным каталогам. Если поместить все модули в один каталог, ошибка не возникает. Но это достаточно неудобно, поскольку у меня есть модули проекта, и есть модули библиотек, которые используются в других проектах, и модули библиотек хочется держать в отдельном общем каталоге.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.08.2022, 12:54
Ответы с готовыми решениями:

Странности с Lazarus: Circular unit reference
Пытаюсь портировать свою программу с Delphi на Lazarus. Выбрал Сервис/Преобразование кода на Delphi/Преобразовать проект Delphi в проект...

Ошибка: Circular unit reference between Unit2 and Unit1
Доброго времени суток. На первой форме 1 кнопка, на второй 1 кнопка. Первая кнопка открывает вторую форму в обычном режиме и...

Circular unit reference between Unit2 and Unit1
Подскажите, в чем ошибка. Вот код всей программы: unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils,...

9
Модератор
 Аватар для D1973
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,335
Записей в блоге: 3
16.08.2022, 01:58
Цитата Сообщение от Drouge Посмотреть сообщение
Я переместил uses Forms из inteface в implementati­on
Как по мне - неправильно это. Стандартные модули должны находиться на стандартных местах, т.е. в секции interface

Не по теме:

Цитата Сообщение от Drouge Посмотреть сообщение
это достаточно неудобно
Конечно, каждый по своему с ума сходит, но вот мне кажется (я не настаиваю ни на чем, это только мое мнение!) что неудобен как раз такой подход - разброс исходников по разным каталогам. Я делаю по правилу: один проект - один каталог. И все, что требуется для данного проекта, копируется в этот каталог.

0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
16.08.2022, 02:47
Цитата Сообщение от D1973 Посмотреть сообщение
Как по мне - неправильно это. Стандартные модули должны находиться на стандартных местах, т.е. в секции interface
Нет. Модули в секциях uses должны находиться именно там где они нужны. И не иначе.
Цитата Сообщение от D1973 Посмотреть сообщение
Конечно, каждый по своему с ума сходит, но вот мне кажется (я не настаиваю ни на чем, это только мое мнение!) что неудобен как раз такой подход - разброс исходников по разным каталогам. Я делаю по правилу: один проект - один каталог. И все, что требуется для данного проекта, копируется в этот каталог.
Не соглашусь. Вот у меня есть несколько групп проектов работающих с оборудованием. Функциональность и групп и проектов внутри них несколько разная. Но оборудование всё-таки одно и то же. Так зачем например мне в каждом проекте держать свой файл по константам, типам, командам и т.п. того железа, с которым ПО работает? Если что-то меняется в железе, зачем менять эти данные в куче файлов, расположенных в каталогах проектов? Это же просто издевательство над здравым смыслом!

Но по вопросу автора сказать ничего не могу. Циклические ссылки со стандартными модулями это что-то странное.

Добавлено через 13 минут
Цитата Сообщение от northener Посмотреть сообщение
Не соглашусь. Вот у меня есть несколько групп проектов работающих с оборудованием.
Ну и да. На всякий случай. Эти группы проектов у меня на Дельфи. На Лазарусе я ничего подобного не делал.
0
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1
19.09.2022, 21:02  [ТС]
Неужели никто не может помочь с моей проблемой?
Я создал проект hello world, использующий один модуль из моей библиотеки, и автопортировал его на Lazarus. Снова возникла эта ошибка. Обнаружил, что можно от неё избавиться, если в каталоге с модулями моей библиотеки удалить все модули, кроме того что используется проектом. Тогда проект компилируется. Копирую в этот каталог эти остальные модули - и снова не компилируется. Получается, что Lazarus автоматом компилирует все модули, прописанные в Проект/Параметры компилятора/Пути/Другие модули. Зачем он это делает?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
20.09.2022, 00:18
Цитата Сообщение от Drouge Посмотреть сообщение
Неужели никто не может помочь с моей проблемой?
Как воспроизвести вашу проблему?
0
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1
20.09.2022, 14:58  [ТС]
Вроде разобрался, у меня был модуль с названием ellipses, а в Lazarus есть такой стандартный модуль.
0
Модератор
 Аватар для D1973
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,335
Записей в блоге: 3
20.09.2022, 15:04
Цитата Сообщение от Drouge Посмотреть сообщение
Неужели никто не может помочь
Цитата Сообщение от Drouge Посмотреть сообщение
у меня был модуль с названием ellipses
Drouge, ну вот как, КАК, можно было Вам помочь? Нет ни минимального проекта, где проблема воспроизводится, ни банального листинга кода. Как я должен угадать, какие модули Вы там используете? А телепаты нынче дороги...
1
0 / 0 / 0
Регистрация: 09.08.2022
Сообщений: 69
21.09.2022, 08:02
Drouge, а не проще пересобрать проект прямо в среде? А то с копированием Лазарус не дружит...
Тем более, что на стандартные модули Delphi в Лазарусе есть альтернатива. Если программа маленькая, то советую попробовать

Добавлено через 31 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
А телепаты нынче дороги...
А за двойную цену работаете?
0
21.09.2022, 08:50

Не по теме:

Цитата Сообщение от aprilpotter912 Посмотреть сообщение
А за двойную цену работаете?
Дык я-ж не телепат...

0
21.09.2022, 12:23

Не по теме:


Цитата Сообщение от D1973 Посмотреть сообщение
Дык я-ж не телепат...
Нет телепатов в своём отечестве...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2022, 12:23
Помогаю со студенческими работами здесь

Ошибка Circular unit reference to
Вот сделал тест, в нем 7 форм. Вначале все работало нормально, а сейчас выдает ошибку Unit3.pas(7): Circular unit reference to 'Unit3'....

Проблема с "Circular unit reference"
Неожиданно столкнулся с проблемой. "Круговая ссылка на модуль". Моих навыков не достаточно, поэтому прошу помощи. Как такое можно...

Странная ошибка компилятора FreePascal 3.0.4 lazarus-2.0.2
Знатоки Лазаря. Помогите разобраться в чём проблема. У меня lazarus-2.0.2-fpc-3.0.4-win64.exe. Windows 7 64 bit. Пробую...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу "С++ для чайников" Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

Циклическая ссылка (A circular reference was detected while serializing an object of type 'tblProduct')
Подскажите в чем проблема,спасибо. Есть вспомогательный класс public class ListObjectsFromDB { public ListObjectsFromDB()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru