Xcode: Как мне создать свой проект .app также в качестве общей библиотеки? - PullRequest
1 голос
/ 27 июля 2011

Сначала я использую Xcode 3.2.5 на MAC OS X 10.6

У меня есть проект приложения Какао, который прекрасно работает и работает. У меня есть некоторые функции в этом проекте, которые я экспортирую, используя:

#define CORE_EXPORT __attribute__ ((visibility ("default")))

extern "C" {
    CORE_EXPORT IUIEventHandler* GetIUIEventHandler();  
}

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

Нужно ли создавать оригинальное приложение какао также как динамическую библиотеку? Или есть способ связать исполняемый файл приложения Какао?

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Этот ответ немного грязный, но работает. Я использовал флаг компоновщика -undefined dynamic_lookup в моей библиотеке, который должен импортировать функции из исполняемого файла основного приложения, и я не связываюсь ни с какой библиотекой, которая содержит функции, которые необходимо импортировать.

Это заставляет компоновщика не беспокоиться о неопределенных символах и помечать их как ссылки во время загрузки. Когда приложение загружает мою библиотеку, созданную с помощью -undefined dynamic_lookup, оно само связывает неопределенные символы.

Вот где я нашел свой ответ: http://lists.apple.com/archives/xcode-users/2008/Dec/msg00002.html

0 голосов
/ 27 июля 2011

Один проект XCode состоит из нескольких целей. Каждая цель производит продукт. Продукт - это что-то вроде приложения или разделяемой библиотеки.

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

Я бы реорганизовал ваш проект так, чтобы он имел две цели: одна была бы общей библиотекой или структурой, а другая - приложением.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...