Правильная организация кроссплатформенности

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

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

Правильная организация кроссплатформенности

Сообщение Vadim » 14.11.2018 13:25:50

Собственно вопрос возник из-за непонятной для меня ошибки:
- Есть проект, с полностью идентичным кодом для нескольких типов ОС:
--- Windows 32;
--- Windows 64;
--- Lnux 64.
Если проект создан в Lazarus 32 бита Windows, он там успешно собирается, работает и всё океюшки. Тот же самый проект при попытке собрать в Lazarus 64 бита Windows выкидывает мне ошибку (см. рисунок).
Это не кросскомпиляция, каждая сборка идёт именно на той платформе, под которую и собирается.
Собственно вопрос в том, что и где, в каких настройках прописать, чтобы проект собирался без подобных воплей об ошибках?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Vadim
долгожитель
 
Сообщения: 3034
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Правильная организация кроссплатформенности

Сообщение MysticCoder » 14.11.2018 14:58:14

ну какая же это не кросскомпиляция, когда компилятор прямо говорит, что пытается компилировать под ОС win32 и i386? У тебя в текущем режиме это видимо явно указано.
настраивай режимы сборки, либо по режиму на каждую платформу, либо один режим на все - default ОС и default проц.
MysticCoder
постоялец
 
Сообщения: 147
Зарегистрирован: 14.09.2013 00:20:28

Re: Правильная организация кроссплатформенности

Сообщение Vadim » 14.11.2018 15:52:30

Нет, не кросскомпиляция. Та ситуация, которую я показал - ошибка из-за каких-то неправильных настроек.
Я хочу узнать, что именно нужно поставить где-то в настройках, чтобы один и тот же код проекта, компилился на разных платформах именно тем компилятором, который специально поставлен имменно для этой платформы.

Добавлено спустя 1 минуту 42 секунды:
MysticCoder писал(а):default ОС и default проц.

В настройках как раз это и стоит. Не помогает.
Vadim
долгожитель
 
Сообщения: 3034
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Правильная организация кроссплатформенности

Сообщение Лекс Айрин » 14.11.2018 16:14:54

Vadim, странно, а уже есть сборка fpc под винду 64бита? Вроде как были там какие-то глюки(((

А нет... нету такого... только кросс-компилятор, который нужно ставить отдельно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4537
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Правильная организация кроссплатформенности

Сообщение MysticCoder » 14.11.2018 16:15:19

Vadim писал(а):Я хочу узнать, что именно нужно поставить где-то в настройках, чтобы один и тот же код проекта, компилился на разных платформах именно тем компилятором, который специально поставлен имменно для этой платформы.

никаких галочек специально не надо ставить. все по умолчанию компилируется и переносится. раз ты говоришь, что стоит default ОС, а на скрине компилится под win32 - значит ты запустил Lazarus 32хбитный.
ну а по поводу ошибки - ты точно открываешь тот же самый проект, а не создал новый? просто зависимости пакетов прописаны в файле .lpi и не зависят от режима сборки, т.е. потерятся они не могли. ну и посмотреть их можно в инспекторе проекта. если в одном и том же проекте в одной платформе есть зависимость от пакета, а в другой эта зависимость потеряна - это какой то глюк.
MysticCoder
постоялец
 
Сообщения: 147
Зарегистрирован: 14.09.2013 00:20:28

Re: Правильная организация кроссплатформенности

Сообщение serbod » 14.11.2018 16:35:45

Только что попробовал на Lazarus 1.8.4 x86_64-win64 / FPC 3.0.4
По дефолту создает 64-битный exe. Если в свойствах проекта поставить архитектуру OS win32 и CPU i386, то создает 32-битный экзешник, который в диспетчере задач виден со звездочкой.

На скриншоте написано, что в списке зависимостей проекта должен находится LCL. Проверьте.
Аватара пользователя
serbod
постоялец
 
Сообщения: 357
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Правильная организация кроссплатформенности

Сообщение Vadim » 14.11.2018 16:50:26

Лекс Айрин писал(а):странно, а уже есть сборка fpc под винду 64бита?

Ну как Вам сказать... :-D В комплекте с 64-битным Лазарусом идёт 64-битный FPC. Я им маленько попользовался, как вместе с Лазарем, так и отдельно, с консольными программками. Пока ничего портящего настроение не нашёл, правда такой целью, как поиск багов и не заморачивался... :-D

Добавлено спустя 5 минут 38 секунд:
MysticCoder писал(а):значит ты запустил Lazarus 32хбитный.

Клянусь своей треуголкой - именно 64-ех битный. Приду завтра на работу - специально скриншот сделаю. Мало того, скопировал каталог на Линукс, где сроду никогда не было не только 32-ух битной версии, но и вообще никакой винды - та же самая ошибка выскакивает.
MysticCoder писал(а):ты точно открываешь тот же самый проект, а не создал новый?

Совершенно точно. Там чёртова куча компонентов со специфическими названиями и все они виднеются в инспекторе.
MysticCoder писал(а):ну и посмотреть их можно в инспекторе проекта.

Опять же, совершенно точно в инспекторе проектов весь список идентичен и там и там.

Добавлено спустя 1 минуту 46 секунд:
serbod писал(а):На скриншоте написано, что в списке зависимостей проекта должен находится LCL. Проверьте.

Проверял уже. У меня там FCL и LCL...

Если завести новый проект, то всё чин-чином - создаётся 64-битный экзешник и никаких ошибок.

А, кстати, забыл сказать - использовал Lazarus 2.0 и 2.1. Может именно это вносит проблему? Может кто-нибудь ещё проверить?
Vadim
долгожитель
 
Сообщения: 3034
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Правильная организация кроссплатформенности

Сообщение MysticCoder » 14.11.2018 17:31:20

Можешь скинуть проект, без pas и dfm модулей, посмотрю на линухе...
MysticCoder
постоялец
 
Сообщения: 147
Зарегистрирован: 14.09.2013 00:20:28

Re: Правильная организация кроссплатформенности

Сообщение Vadim » 14.11.2018 17:57:17

MysticCoder
Ок. Завтра.

Добавлено спустя 12 часов 50 минут 57 секунд:
Не могу сказать, что проблема решена, однако помня, что мне говорили проверить в зависимостях LCL, я его сначала из зависимости удалил, а потом включил опять. И ошибка пропала. :-) Что это был за глюк - не понял. Но на всякий случай на будущее - это может решить проблему. Хотя как решение оно некамильфо...
Vadim
долгожитель
 
Сообщения: 3034
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Правильная организация кроссплатформенности

Сообщение fedan » 16.11.2018 01:34:48

Нужно удалить файл *.lps. И вместо "Компилировать" нужно нажимать "Очистить и собрать".
fedan
новенький
 
Сообщения: 53
Зарегистрирован: 15.09.2016 21:18:48

Re: Правильная организация кроссплатформенности

Сообщение Vadim » 16.11.2018 04:23:14

fedan
Ок.
Я пользовался просто "Собрать".
Vadim
долгожитель
 
Сообщения: 3034
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10

Рейтинг@Mail.ru