Консультация № 62026
10.11.2006, 05:37
0.00 руб.
0 3 1
Какое действие данного параметра TurboLink32:

-ax Specify application type
-ap Windowing Compatible
-aa Uses Windowing API

Обсуждение

Неизвестный
10.11.2006, 10:47
общий
это ответ
Здравствуйте, Alexei_FAQ!
-ax - это выбор типа приложения, где вместо "х" надо поставить одну из букв: или "р", или "а".
В виндовс есть 2 типа приложений: GUI и консольные. GUI - это приложения, использующие окно, кнопочки и т.п., т.е. графические элементы. А консольные приложения - это такие, которые используют виндовский текстовый режим, похожий на досовский. Например, FAR - это как раз консольное приложение (но он использует псевдографику - текстовые рамочки и т.п.)

-ap Windowing Compatible - значит совместимое с оконным режимом (виндовское консольное приложение). Тот же FAR может запускаться и в полноэкранном режиме, и в режиме окна, при этом он остаётся текстовым.

-aa Uses Windowing API - это значит оконное приложение. Оно использует API для создания графических элементов управления - окон, кнопок, текстовых полей, и для управления этими элементами (например, задать положение окна)

(А вообще конечно запутанное обозначение. Вот в майкрософтовском линкере более понятно: / SUBSYSTEM:CONSOLE - значит консоль, / SUBSYSTEM:WINDOWS - значит оконное приложение.)
Неизвестный
12.11.2006, 06:04
общий
Ну, и зачем линкеру знать какое он создаёт приложение - оконное или консольное ?
Неизвестный
12.11.2006, 23:59
общий
затем что когда запускается консольное приложение, то для него надо создавать консоль (если запущен из чужой консоли, то может наследовать, а если просто запущен, то для этого приложения надо создать консоль). А для оконного приложения не надо создавать консоль - оно само создаст окно.Например, сделайте приложение, вызвающее messagebox, сделайте его в двух вариантах - оконном и консольном. Когда запустите оконный вариант, то просто появится окошко messagebox"а, а если слинкуете его как консольное, то ещё появится консоль.Кстати, оконное приложение тоже может спокойно создавать себе консоль вызовом allocconsole. А вообще линкеру это нужно знать потому что эта опция влияет на один байт в PE-заголовке, который и определяет является ли приложение оконным или консольным.
Форма ответа