После некоторого количества написанных программ у любого программиста набираются функции, применяемые им в каждом проекте. Это могут быть какие-нибудь функции преобразования, ввода/вывода и т. п. Соответственно, разрабатывая новый проект, можно написать эти функции заново, включить в проект файл, в котором уже будут собраны все функции, либо включить в проект статически линкующуюся библиотеку.
О недостатках написания функций заново, надеюсь, говорить не надо. Однако включение файла содержащего все функции, которые используются неоднократно, также имеет свои недостатки. В основном это необходимость в постоянной перекомпиляции данного файла.
Наилучшим выходом из этой ситуации является создание статически линкующейся библиотеки (если вы, конечно, не хотите воспользоваться динамически линкующимися). Таким образом, дальше в этой статье пойдет речь о создании Palm OS Static Library в CodeWarrior’е.
Я начал с того, что запустил мастер создания проекта и выбрал Palm OS Application Stationery. После этого зашел в настройки Target’а (Alt+F7) и в Target->68K Target выбрал вместо Palm OS Application Palm OS Static Library. Далее записал настройки, и попытался откомпилировать проект. Получил сообщение об ошибке линковки с объяснением того, что в статической библиотеке не должно быть ресурсов. Хорошо «убил» в проекте папку с ресурсами, после чего зашел заново в настройки Target’а, где в Target->68K Target изменил Filename на TestSampleLib.lib. Понятно, что это необходимо для того, чтобы файл имел расширение lib, которое в CodeWarrior’е обозначает Static Library.
Пробуем откомпилировать Все равно ругается. И ругается из-за того, что я оставил включенным Post Linker, а статическая библиотека не должна через него проходить. Захожу в Target Settings, Target->Target Settings и Post-linker ставлю None.
Теперь проект удачно компилируется и в поддиректории проекта Obj можно найти TestSampleLib.lib. Все что теперь надо это взять и заменить все содержимое Starter.cpp на те функции, которые я собираюсь «запихнуть» в Static Library. Причем также необходимо сделать.h-файл, в котором будут храниться описания (definition) всех этих функций.
А теперь последний пункт. Чтобы использовать эту библиотеку, нужно просто добавить ее в проект, указать путь на.h-файл, содержащий описание функций в библиотеке, и прописать #include на.h-файл во всех модулях, где вы собираетесь использовать функции.
Замечу, что создать Static Lib можно и более коротким путем, если начать не с готового проекта, а с пустого. Но тогда бы я не смог посвятить вас в некоторые обязательные шаги, делать которые вам придется, наверняка, не раз.
Автор: Ронин Виктор