2012-05-14 5 views
3

Я создал новый проект в XCode (используя шаблон «STL C++ library») и сделал небольшую тестовую функцию void hello();, которая печатает на консоли.Как использовать динамическую общую библиотеку в проекте xcode на C++?

Он компилируется отлично, и я могу экспортировать файл dylib.

Я не могу понять, как создать проект, который затем ссылается на этот файл и может вызвать метод hello().

Любые советы были бы весьма полезными.

Alex.

ответ

3

Создайте еще один проект Xcode, например, проект приложения. В вашем примере вы можете создать проект инструмента командной строки, который использует C++.

После создания проекта добавьте dylib в целевую ссылку Binary с фазой построения библиотек. В Xcode 4 выберите проект из навигатора проекта, чтобы открыть редактор проекта. Выберите цель из целевого списка в левой части редактора проекта. Нажмите кнопку «Сформировать фазы» в верхней части редактора. Нажмите треугольник раскрытия рядом со строкой компоновки ссылок с базой данных. Нажмите кнопку +, чтобы добавить свою библиотеку.

Когда вы закончите добавлять dylib в свой проект, включите в свой код заголовочный файл для своей библиотеки, и вы сможете вызвать функцию hello(). Вам также может потребоваться добавить путь поиска в вашу библиотеку к настройке сборки путей библиотеки, чтобы использовать вашу библиотеку.

+0

спасибо. Мне удалось решить проблему (я фактически сделал новую цель в том же проекте, чтобы сделать то же самое, для удобства), но это хороший ответ для всех, кто до сих пор не уверен. –

+0

Я не понимаю этого ответа. В Windows (например) я могу использовать LoadLibrary для фактического выбора/загрузки библиотеки во время выполнения, затем я могу запросить адреса различных функций, которые я хочу вызвать. То, что описано выше, похоже, больше связано с использованием «общих» библиотек, поэтому каждый исполняемый файл не должен статически ссылаться в библиотечном коде. – David

+0

@David Снова прочитайте заголовок вопроса. В нем упоминается использование динамических разделяемых библиотек, поэтому вы не должны удивляться тому, что мой ответ охватывает использование динамических разделяемых библиотек. –

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