Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
76
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
    1. Включение в Ваше приложение не-PhABфайлов

Ваше приложение может включать файлы, которые были созданы не в PhAB, но Вам необходимо сообщить PhAB'у, как их отыскать.

          1. Мультиплатформенные приложения

PhAB генерирует пустой список следующих файлов в директории src, и Вы можете его редактировать:

indHfiles

Не PhAB-шные хеадер-файлы.

Например: MYHDR=../header1.h ../header2.h

indOfiles

Не PhAB-шные файлы объектных модулей.

Например: MYOBJ=file1.o file2.o

indSfiles

Не PhAB-шные файлы исходного кода.

Например: MYSRC=../file1.c ../file2.c

 Помните о необходимости задания файловых имён относительно местонахождения файлов Makefile. Для мультиплатформенного приложения они являются относительными к директории платформы:

  • хеадер-файлы и файлы исходного кода обычно располагаются в родительской директории src, так что их имя начинается с ../

  • объектные модули обычно располагаются в той же директории, что и файлы Makefile

          1. Одноплатформенные приложения

Одноплатформенные приложения из более ранних версий Photon не имеют файлов indHfiles, indOfiles и indSfiles. Вместо этого Вы находите MYHDR, MYOBJ и MYSRC в Вашем файле Makefile и можете там задавать имена файлов.

 Помните о необходимости задания файловых имён относительно местонахождения файла Makefile. Для одноплатформенного приложения они являются относительными к директории src.

          1. Добавление библиотек

Если Ваше приложение использует библиотеку, которая по умолчанию не включена в Makefile, Вы можете её добавить, отредактировав следующие переменные:

  • LDFLAGS – используется при линковке вместо статических библиотек Photon'а.

  • SDFLAGS – используется при линковке вместо библиотек совместного доступа Photon'а.

    1. Создание результирующей dll как приложения PhAb

Вы можете создать приложение PhAB как DLL, однако не существует опции PhAB, позволяющей Вам это сделать. PhAB ничего не знает о создании DLLей; существует библиотека PhAB, позволяющая Вам преобразовать приложение PhAB в DLL.

 Приложение, загружающее Вашу DLL, должно быть приложением PhAB, так что, по существу, библиотека PhAB инициализирована.

Даже несмотря на то, что PhAB позволяет Вам при старте устанавливать функцию инициализации и окна открытия, они игнорируются, когда Ваше приложение является DLL. Это происходит потому, что обычно запуск выполняется путём вызова функции main(), а в DLL функция main() не вызывается. Не пытайтесь также вызывать её из своего собственного кода.

          1. Компилирование и линковка

Вообще Вы можете преобразовать любое приложение (как создание PhAB'ом, так и нет) в DLL, добавив -shared к флагам компилятора и линковщика (и вероятнее всего добавляя расширение so или dll к имени файла). Вам необходимо также установить для линкера опцию -Bsymbolic, чтобы быть уверенным, что локально определённые символы, используемые DLL, не будут переписаны другими символами с такими же именами из исполняемого файла.

Чтобы выполнить эти изменения для приложения PhAB, следует сделать в Makefile следующее:

  • Добавить -shared к CFLAGS

  • Добавить -shared -Wl, -Bsymbolic к LDFLAGS и SDFLAGS.

  • Найти все случаи появления исполниемого имени и добавить к нему расширение so или dll.

Соседние файлы в папке Литература_1