перенос/портирование Linux to Windows (общие рекомендации)

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

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

перенос/портирование Linux to Windows (общие рекомендации)

Сообщение sunjob » 05.09.2024 21:53:13

день добрый!
не нашел подобной темы, предлагаю выкладывать/делиться секретами/феньками и плюшками.
надеюсь, в будущем пригодиться.
пожалуйста, только без очевидных моментов :о)

п.с. столкнулся с кучей косяков/тонкостей и особенностей при переносе простого приложения (lin to win), поэтому решил пошерстить темы, оказалось совсем мало. аминь!
Аватара пользователя
sunjob
постоялец
 
Сообщения: 156
Зарегистрирован: 12.01.2011 15:19:54

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение RRYTY » 05.09.2024 21:57:17

sunjob писал(а):столкнулся с кучей косяков/тонкостей и особенностей при переносе простого приложения (lin to win)


И какие косяки, тонкости и особенности? Что за "простое приложение"?
RRYTY
постоялец
 
Сообщения: 208
Зарегистрирован: 25.12.2021 10:00:32

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение svk12 » 06.09.2024 00:52:03

Код: Выделить всё
  {$IFDEF WINDOWS}
  SimpleIPCServer1.StartServer(False);
  {$ELSE}
  SimpleIPCServer1.StartServer;
  {$ENDIF}       


Вот такое приходилось использовать при сборке под Win32 (64 - не пробовал). Не хотел TSimpleIPCServer работать в многопоточном режиме.
Ну и ещё:
Код: Выделить всё
      {$IFDEF WINDOWS}
      LHelpConnector1.LHelpPath :=CurDir+'lhelp.exe';
      {$ELSE}
      LHelpConnector1.LHelpPath :=CurDir+'lhelp';
      {$ENDIF}       

И ещё:
Код: Выделить всё
{$IFDEF WINDOWS}
  HostName:=SysUtils.GetEnvironmentVariable('COMPUTERNAME');
  {$ENDIF}
  {$IFDEF UNIX}
  HostName:=SysUtils.GetEnvironmentVariable('HOSTNAME');
  {$ENDIF}             

Это навскидку. Может быть, ещё что-нибудь припомню...
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение sunjob » 06.09.2024 01:02:43

...
Последний раз редактировалось sunjob 11.09.2024 14:15:02, всего редактировалось 1 раз.
Аватара пользователя
sunjob
постоялец
 
Сообщения: 156
Зарегистрирован: 12.01.2011 15:19:54

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение Seenkao » 06.09.2024 02:24:58

Занимался портированием, читайте, будет полезно, люди так же давали некоторые советы. Постарался расписать последовательность действий, но может не совсем понятно.

Добавлено спустя 24 минуты 32 секунды:
Re: перенос/портирование Linux to Windows (общие рекомендации)
Общая последовательность такая:
1. портируете проект.
2. пытаетесь запустить, если проект запускается то переходим к пункту 5.
3. "удаляете" (комментируете) места где происходит ошибка. Если проект большой, записывайте всё что "удаляли" себе в блокнот. Если понимаете где надо будет делать подобные действия, просто делайте без очередной компиляции проекта.
4. повторяете 3-й пункт пока не скомпилируется проект.
5. начинаете само портирование программы. Самый долгий и самый нудный процесс, здесь вам надо попытаться восстановить то, что вы "удаляли" ранее. Самое основное в этом случае, это функциональность созданную для Windows надо:
- заменить, благо для этого уже существует ряд модулей LCLIntf.
- подменять какими-то своими или уже готовыми решениями. На что уйдёт больше сил.

Терпения вам!
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение sunjob » 06.09.2024 15:54:49

Код: Выделить всё
writeln('string');

под виндой выдаст исключение (в режиме GUI). такой подлости от винды я не ожидал :mrgreen:
p.s. (можно не комментировать, бормант уже наставил на путь истинный :D )

(из диалога)
Процесс может быть
- консольным (флаг в PE-заголовке), тогда при старте ему винда создаст консоль и свяжет с ней stdIn, stdOut, stdErr.
- GUI, тогда не создаст и не свяжет.
+
а как народ выкручивается?
-->
Логи в журнал винды или в файл.
Если нужно в консоль, можно создать отдельно
+
Write или WriteLn без явного указания файла - это
Код: Выделить всё
Write(Output, ...)
WriteLn(Output, ...)

+
Чтобы Write, WriteLn в файл писал:
Код: Выделить всё
Output: AssignFile(Output, pathTo);
Rewrite(Output);
<...>
Close(Output);

+
AllocConsole
using-the-console
Аватара пользователя
sunjob
постоялец
 
Сообщения: 156
Зарегистрирован: 12.01.2011 15:19:54

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение MaratIsk » 06.09.2024 23:33:08

как только начинают портирование с одной платформы на другую или ЯП на другой, я понимаю, что проект вошел в стадию энтропии :D
MaratIsk
постоялец
 
Сообщения: 117
Зарегистрирован: 20.08.2009 18:15:20

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение Сквозняк » 22.09.2024 11:01:59

sunjob писал(а):Процесс может быть
- консольным (флаг в PE-заголовке), тогда при старте ему винда создаст консоль и свяжет с ней stdIn, stdOut, stdErr.
- GUI, тогда не создаст и не свяжет.
+
а как народ выкручивается?


Гуёвое приложение при старте создаёт консоль и один раз сворачивает её. Если при этом свернутся лишние консоли, то это будет один раз.

Добавлено спустя 3 минуты 18 секунд:
Re: перенос/портирование Linux to Windows (общие рекомендации)
MaratIsk писал(а):как только начинают портирование с одной платформы на другую или ЯП на другой, я понимаю, что проект вошел в стадию энтропии :D


Необязательно. Больше всего пользователей в винде, а разработчик может её не любить и писать в линуксе а потом собирать виндовую сборку в вайне, тогда к проекту не прицепятся лишние виндовые зависимости, бо что виндовое не работает в вайне - не нужно :mrgreen:
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: перенос/портирование Linux to Windows (общие рекомендаци

Сообщение MaratIsk » 22.09.2024 13:14:02

Сударь, Вы не поняли - портирование проекта или перенос решения на другую платформу или ЯП, говорит об одном - пришел новый техдир со своими тараканами в голове и идеями - все переписать
MaratIsk
постоялец
 
Сообщения: 117
Зарегистрирован: 20.08.2009 18:15:20


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru