Правильная организация кроссплатформенности
Модератор: Модераторы
Правильная организация кроссплатформенности
Собственно вопрос возник из-за непонятной для меня ошибки:
- Есть проект, с полностью идентичным кодом для нескольких типов ОС:
--- Windows 32;
--- Windows 64;
--- Lnux 64.
Если проект создан в Lazarus 32 бита Windows, он там успешно собирается, работает и всё океюшки. Тот же самый проект при попытке собрать в Lazarus 64 бита Windows выкидывает мне ошибку (см. рисунок).
Это не кросскомпиляция, каждая сборка идёт именно на той платформе, под которую и собирается.
Собственно вопрос в том, что и где, в каких настройках прописать, чтобы проект собирался без подобных воплей об ошибках?
- Есть проект, с полностью идентичным кодом для нескольких типов ОС:
--- Windows 32;
--- Windows 64;
--- Lnux 64.
Если проект создан в Lazarus 32 бита Windows, он там успешно собирается, работает и всё океюшки. Тот же самый проект при попытке собрать в Lazarus 64 бита Windows выкидывает мне ошибку (см. рисунок).
Это не кросскомпиляция, каждая сборка идёт именно на той платформе, под которую и собирается.
Собственно вопрос в том, что и где, в каких настройках прописать, чтобы проект собирался без подобных воплей об ошибках?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
MysticCoder
- постоялец
- Сообщения: 154
- Зарегистрирован: 14.09.2013 00:20:28
ну какая же это не кросскомпиляция, когда компилятор прямо говорит, что пытается компилировать под ОС win32 и i386? У тебя в текущем режиме это видимо явно указано.
настраивай режимы сборки, либо по режиму на каждую платформу, либо один режим на все - default ОС и default проц.
настраивай режимы сборки, либо по режиму на каждую платформу, либо один режим на все - default ОС и default проц.
Нет, не кросскомпиляция. Та ситуация, которую я показал - ошибка из-за каких-то неправильных настроек.
Я хочу узнать, что именно нужно поставить где-то в настройках, чтобы один и тот же код проекта, компилился на разных платформах именно тем компилятором, который специально поставлен имменно для этой платформы.
Добавлено спустя 1 минуту 42 секунды:
В настройках как раз это и стоит. Не помогает.
Я хочу узнать, что именно нужно поставить где-то в настройках, чтобы один и тот же код проекта, компилился на разных платформах именно тем компилятором, который специально поставлен имменно для этой платформы.
Добавлено спустя 1 минуту 42 секунды:
MysticCoder писал(а):default ОС и default проц.
В настройках как раз это и стоит. Не помогает.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Vadim, странно, а уже есть сборка fpc под винду 64бита? Вроде как были там какие-то глюки(((
А нет... нету такого... только кросс-компилятор, который нужно ставить отдельно.
А нет... нету такого... только кросс-компилятор, который нужно ставить отдельно.
-
MysticCoder
- постоялец
- Сообщения: 154
- Зарегистрирован: 14.09.2013 00:20:28
Vadim писал(а):Я хочу узнать, что именно нужно поставить где-то в настройках, чтобы один и тот же код проекта, компилился на разных платформах именно тем компилятором, который специально поставлен имменно для этой платформы.
никаких галочек специально не надо ставить. все по умолчанию компилируется и переносится. раз ты говоришь, что стоит default ОС, а на скрине компилится под win32 - значит ты запустил Lazarus 32хбитный.
ну а по поводу ошибки - ты точно открываешь тот же самый проект, а не создал новый? просто зависимости пакетов прописаны в файле .lpi и не зависят от режима сборки, т.е. потерятся они не могли. ну и посмотреть их можно в инспекторе проекта. если в одном и том же проекте в одной платформе есть зависимость от пакета, а в другой эта зависимость потеряна - это какой то глюк.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Только что попробовал на Lazarus 1.8.4 x86_64-win64 / FPC 3.0.4
По дефолту создает 64-битный exe. Если в свойствах проекта поставить архитектуру OS win32 и CPU i386, то создает 32-битный экзешник, который в диспетчере задач виден со звездочкой.
На скриншоте написано, что в списке зависимостей проекта должен находится LCL. Проверьте.
По дефолту создает 64-битный exe. Если в свойствах проекта поставить архитектуру OS win32 и CPU i386, то создает 32-битный экзешник, который в диспетчере задач виден со звездочкой.
На скриншоте написано, что в списке зависимостей проекта должен находится LCL. Проверьте.
Лекс Айрин писал(а):странно, а уже есть сборка fpc под винду 64бита?
Ну как Вам сказать...
Добавлено спустя 5 минут 38 секунд:
MysticCoder писал(а):значит ты запустил Lazarus 32хбитный.
Клянусь своей треуголкой - именно 64-ех битный. Приду завтра на работу - специально скриншот сделаю. Мало того, скопировал каталог на Линукс, где сроду никогда не было не только 32-ух битной версии, но и вообще никакой винды - та же самая ошибка выскакивает.
MysticCoder писал(а):ты точно открываешь тот же самый проект, а не создал новый?
Совершенно точно. Там чёртова куча компонентов со специфическими названиями и все они виднеются в инспекторе.
MysticCoder писал(а):ну и посмотреть их можно в инспекторе проекта.
Опять же, совершенно точно в инспекторе проектов весь список идентичен и там и там.
Добавлено спустя 1 минуту 46 секунд:
serbod писал(а):На скриншоте написано, что в списке зависимостей проекта должен находится LCL. Проверьте.
Проверял уже. У меня там FCL и LCL...
Если завести новый проект, то всё чин-чином - создаётся 64-битный экзешник и никаких ошибок.
А, кстати, забыл сказать - использовал Lazarus 2.0 и 2.1. Может именно это вносит проблему? Может кто-нибудь ещё проверить?
-
MysticCoder
- постоялец
- Сообщения: 154
- Зарегистрирован: 14.09.2013 00:20:28
Можешь скинуть проект, без pas и dfm модулей, посмотрю на линухе...
MysticCoder
Ок. Завтра.
Добавлено спустя 12 часов 50 минут 57 секунд:
Не могу сказать, что проблема решена, однако помня, что мне говорили проверить в зависимостях LCL, я его сначала из зависимости удалил, а потом включил опять. И ошибка пропала.
Что это был за глюк - не понял. Но на всякий случай на будущее - это может решить проблему. Хотя как решение оно некамильфо...
Ок. Завтра.
Добавлено спустя 12 часов 50 минут 57 секунд:
Не могу сказать, что проблема решена, однако помня, что мне говорили проверить в зависимостях LCL, я его сначала из зависимости удалил, а потом включил опять. И ошибка пропала.
Нужно удалить файл *.lps. И вместо "Компилировать" нужно нажимать "Очистить и собрать".
fedan
Ок.
Я пользовался просто "Собрать".
Ок.
Я пользовался просто "Собрать".
