Can't find unit *** used by ***

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

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

Ответить
Kigaruna
незнакомец
Сообщения: 3
Зарегистрирован: 04.09.2010 15:07:47

Can't find unit *** used by ***

Сообщение Kigaruna »

Привет. Я видел множество подобных вопросов но ни один из ответов на них небыл достаточно понятным, поэтому решил спросить еще раз.
Используется lazarus-0.9.28.2-fpc-2.2.4-win32 под 32битной Win7. Установлен он в папку C:\Users\имяпользователя\lazarus

При попытке запуска такой программки:
program Project1;
uses fileutil;
begin
end.
выдается собщение: project1.lpr(2,15) Fatal: Can't find unit fileutil used by Project1

однако после добавления строки: $(LazarusDir)\lcl\units\$(TargetCPU)-$(TargetOS)
в Project -> Compiler options -> Other Unit files, программа запускается нормально.

при добавлении -FuC:\Users\имяпользователя\lazarus\lcl\units\i386-win32 в FPC.cfg и попытке запуска того же кода выдается собщение:
Recompiling FileUtil, checksum changed for LCLStrConsts
fileutil.pas(2,14) Fatal: Can't find unit FileUtil used by Project1
тоесть ничего не работает.

Вопрос: что и куда надо прописать чтобы fileutil и прочие юниты в lcl всегда находились и при этом не прописывать $(LazarusDir)\lcl\units\$(TargetCPU)-$(TargetOS) для каждлго отдельного проекта?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Я так полагаю, что вы создаёте консольную программу. Для того чтобы использовать LCL (а модуль fileutil является частью LCL) в консольном приложении необходимо в зависимости проекта добавить пакет LCL и никаких путей прописывать ненужно!
Kigaruna
незнакомец
Сообщения: 3
Зарегистрирован: 04.09.2010 15:07:47

Сообщение Kigaruna »

Да программа консольная. Что имеется ввиду под "в зависимости проекта добавить пакет LCL"? Мне нужно настроить lazarus так, чтобы при создании нового проекта, код наподобие:
program Project1;
uses fileutil;
begin
end.
всегда выполнялся без каких-либо дополнительных телодвижений.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

если хотите использовать LCL то да!

Добавлено спустя 3 минуты 12 секунд:
123.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Kigaruna
незнакомец
Сообщения: 3
Зарегистрирован: 04.09.2010 15:07:47

Сообщение Kigaruna »

Cудя по скриншоту, изначально я правильно понял о чем идет речь, но разве это не будет действовать только для текущего проекта project1? Что если в моем случае не существует проектов которые могли бы обойтись без LCL?

Или же ответом на мой вопрос будет: невозможно сделать так чтобы LCL был автоматически добавлен или просто каким-либо образом доступен для любого нового только что созданного проекта.

UPD: может мне просто модули из LCL в какую-то папочку скопировать?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Зачем придумывать что-либо?
В данном случае, консольному приложения ненужны вся мощь LCL (в большей части проектов оное просто никогда не используется), поэтому при создании консольного приложения по умолчанию LCL не добавляется. Если же вы создаёте проект приложение, то это заведомо подразумевает использование LCL! К дальнейшим выводам, я так думаю, вы придёте сами :wink:
vindim
незнакомец
Сообщения: 3
Зарегистрирован: 17.11.2010 14:55:59

Сообщение vindim »

А что такое LCL? Как его подключить?

Я столкнулся с подобной проблемой на Mac'е. На него я перешел недавно и вынужден перекомпилировать программы написанные на Delphi.
В качестве теста создал форму и запустил файл. Получил сообщение "unit1.pas(8,22) Fatal: Can't find unit FileUtil used by Unit1". Я так понимаю, что Lazarus не видит библиотеки или исходники. Предполагаю, что это надо где-то прописать в настройках Lazarus.

Help, pls
Ответить