2010-06-10 2 views
0

Я не уверен, что я собираюсь сделать это правильно. Я делаю некоторые классы C++ для использования в 2 приложениях. Мне нужно будет скомпилировать их для использования в приложении Cocoa, а затем скомпилировать для использования с fastcgi.Как использовать источник cpp для 2 проектов

Должен ли я создать динамическую библиотеку?

ответ

3

Не забывайте, что у вас есть статическая библиотека в качестве опции. На некоторых платформах динамические библиотеки поставляются с кучей раздражающего багажа. Они также немного медленнее (хотя это, как правило, не относится к делу). Они также не могут быть заменены без повторной компиляции программы (вы можете быть более обеспокоены этим в веб-среде). Наконец, когда вы запускаете только одну из программ на компьютере, вы ничего не получаете, создавая динамическую библиотеку ... и мало, когда их всего два.

+0

Итак, если я создаю статическую библиотеку, она будет содержать скомпилированные исполняемые файлы? Затем я бы включил в него файлы заголовков? Это позволило бы мне включить файлы libs и заголовков в мои проекты приложений? – joels

+0

Ну, статические библиотеки обычно не исполняются, но они содержат скомпилированный объектный код для материала, который вы вставляете в них. На остальные ваши вопросы можно ответить утвердительно. –

+0

«Скомпилированный объектный код», что я имел в виду. Благодарю. Статическая библиотека звучит так же, как Framework в xcode. Когда я создаю Framework в xcode, файл фрейма похож на папку/пакет, и в нем есть папка Headers для публичных заголовков. Когда я создаю статическую библиотеку в Xcode, она создает файл .a. Когда я хочу использовать lib, как включить заголовки? Я просто включаю lib и любые заголовки? #include libTest.a #include MyClass.h – joels

0

Если вы хотите поделиться несколькими классами C++ среди проектов, вы должны поместить их в библиотеку классов. Однако не знаком с какао.

+0

Какое расширение файла является библиотекой классов? – joels

5

Если исходные файлы должны быть скомпилированы с различными параметрами условной компиляции для работы в двух приложениях, вам лучше отправить исходный код и скомпилировать его вместе с самими приложениями.

В противном случае вы можете создать библиотеку и отправить скомпилированные версии вместе с заголовками для компиляции приложений. Должна ли библиотека быть динамичной или нет, зависит от вашей ситуации. Если вам не нужно обновлять библиотеку отдельно, не перекомпилируя исполняемый файл, простая статическая библиотека, вероятно, является лучшим выбором.

0

Если у вас много классов, то общая библиотека. Обязательно используйте только абстрактные классы и код в публичных заголовках (шаблоны в порядке). Предоставьте фабрики (или простые функции) для создания объектов.

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

P.S. Еще один фактор, который следует учитывать, - это то, как много людей работают над проектом. Общая библиотека - дополнительная ответственность. Если у вас есть человек, который позаботится об этом, то это может стоить просто с организационной точки зрения.

Смежные вопросы