Портирование проекта Windows -> Linux

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

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

Ответить
Аватара пользователя
Potatoo
незнакомец
Сообщения: 4
Зарегистрирован: 21.08.2018 14:15:16
Откуда: Подольск

Портирование проекта Windows -> Linux

Сообщение Potatoo »

Доброго времени суток всем!
Прошу помочь/подсказать куда копать в моей проблемке)
Итак что имеется:
1) Был портирован рабочий проект из под Windows/Delphi7 на Windows/Lazarus, тут вопросов не было.... при правке синтаксиса и вызовов, проект запустился.
2) Далее портирование проходило из под Windows/Lazarus на Linux(Mint)/Lazarus, тут и появилась проблема. Проект компилируется, собирается, при попытке старта происходит непонятная вещь, сразу выдаётся окно "Execution stopped"при этом никаких ошибок не выдаёт.
Может кто сталкивался с подобной проблемой, буду признателен за помощь!
Проект приложения - оконный.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Мой хрустальный шар подсказывает, что нужно запускать программу в линуксе под лазарем и в дебагере пошагово проверять всё, что делается в oncreate и onshow форм.
Аватара пользователя
Potatoo
незнакомец
Сообщения: 4
Зарегистрирован: 21.08.2018 14:15:16
Откуда: Подольск

Сообщение Potatoo »

При установке брекпоинта на "Application.Initialize" отладчик даже туда не попадает:

Код: Выделить всё

begin
  Application.Initialize;
  Application.Title:='Text_Name';
  Application.CreateForm(TfmMain, fmMain);
  Application.CreateForm(TfmErr, fmErr);
  Application.Run;
end.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

В каких-либо юнитах есть секции инициализации? Как они выполняются?
Аватара пользователя
serbod
постоялец
Сообщения: 449
Зарегистрирован: 16.09.2016 10:03:02
Откуда: Минск
Контактная информация:

Сообщение serbod »

В начале исходника проекта есть волшебные строки?

Код: Выделить всё

uses
{$ifdef unix}
  cthreads,
{$endif}
Аватара пользователя
Potatoo
незнакомец
Сообщения: 4
Зарегистрирован: 21.08.2018 14:15:16
Откуда: Подольск

Сообщение Potatoo »

Снег Север, при инициализации модуля "Interfaces" валится:

Код: Выделить всё

initialization
  CreateWidgetset(TGtk2WidgetSet);


Добавлено спустя 2 минуты 24 секунды:
serbod, внимательно глянул - таких строк нету(
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Potatoo, я эти виджеты не использовал, попробуйте сделать минимальный тестовый работающий проект с ними и сравните со своим, наверняка что-то не прописалось
Alex2013
долгожитель
Сообщения: 3230
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Вот что у меня было:
viewtopic.php?f=5&t=10482
(Глянь может проблема та же самая...) :idea:
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Potatoo
Более адекватно можно ответить посмотрев на порт.

А так: открываете каждый модуль, проверяйте валидность открытия форм и самого кода.
Директивы и т.д. уже упоминали.
Аватара пользователя
Potatoo
незнакомец
Сообщения: 4
Зарегистрирован: 21.08.2018 14:15:16
Откуда: Подольск

Сообщение Potatoo »

Снег СеверserbodAlex2013pupsik Благодарю ВСЕХ за помощь :) помогли с решением проблемы!
Как советовалось в статье "Модули, необходимые для мультипоточных приложений" http://wiki.freepascal.org/Multithreaded_Application_Tutorial/ru
В начале "основной_модуль*.lpr" сразу после uses нужно было прописать:

Код: Выделить всё

uses
{$ifdef unix}
  cthreads,
  cmem, // the c memory manager is on some systems much faster for multi-threading
{$endif}

после этого, проект стартанул
:wink:
Ответить