Как организовать исходный файл C, предварительно скомпилированный GCC Make, и собрать их в пакет Xcode? У меня есть повторяющийся символ _основная ошибка

Как собрать .bundle из исходного кода?

Это может показаться простой проблемой, но это мешало мне в течение недели ...

Вот моя проблема:

У меня есть куча файлов .c и .h, которые организованы в папке и ее подпапках. Исходный код был написан и скомпилирован с помощью gcc make и протестирован многими другими инструментами make. В исходном коде есть некоторые утилиты и инструменты командной строки, и он содержит больше кода, который служит библиотекой для этих утилит и инструментов. Это файлы, которые служат библиотеками, которые я хочу использовать повторно. (Под библиотекой я не подразумеваю статическую библиотеку или что-то в этом роде, я просто имею в виду, что некоторые файлы .c и .h в определенных подпапках предоставляют функции, которые могут вызываться некоторыми другими файлами .c. Я хочу иметь возможность вызывать эти функции, слишком)

И все же моя проблема более сложна: мне нужно собрать эти .c и .h в связку, чтобы использовать их повторно. Я не пишу свое заявление на C; Я занимаюсь разработкой в Unity, и Unity может принимать только файлы .bundle в Mac OS.

Вот моя цель:

Организовать папку с исходным кодом надлежащим образом, чтобы я мог встроить их в пакет в Xcode 4.

Вот где я застрял:

При сборке проекта я получил следующую ошибку:

Дублируемый символ _main в /Users/zeningqu/Library/Developer/Xcode/DerivedData/ccn-cfygrtkrshubpofnfxalwimtyniq/Build/Intermediates/ccn.build/Debug/ccn.build/Objects-normal/iketest.nonds/ikequo/ Библиотека / Разработчик / Xcode / DerivedData / ccn-cfygrtkrshubpofnfxalwimtyniq / Build / Intermediates / ccn.build / Debug / ccn.build / Objects-normal / i386 / ccnd_main.o для архитектуры i386

Я могу относиться к этой ошибке, потому что я могу найти много основных записей в исходном коде. Большинство из них являются тестовыми утилитами.

Вот что я попробовал:

Я попытался удалить все эти служебные файлы .c, но безуспешно. Ошибка все еще там. Я удаляю и удаляю, пока некоторые файлы не могут найти определение функции, которую они вызывают. Поэтому я должен был остановиться там.

Хотя я не смог собрать пакет, я смог создать статическую библиотеку C / C ++ (с расширением .a). После того, как я получил файл .a, я попытался поместить его в другой проект Xcode и попытался собрать его в пакет. Я мог создать пакет таким образом, но тогда у меня были проблемы с доступом к содержимому пакета.Как вызвать функции, определенные в статической библиотеке .a, если эта библиотека скрыта в комплекте? Я прочитал о документации Apple, которая гласит:

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

(цитата из:https://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFBundles/AboutBundles/AboutBundles.html#//apple_ref/doc/uid/10000123i-CH100-SW1)

Вот о чем я думал:Я думал о замене всего основного чем-то вроде main_sth. Но исходный код был написан не мной, поэтому я не хотел его изменять. (Это просто не похоже на правильный способ сделать что-то со мной ...)Я узнал, что Xcode имеет встроенный компилятор gcc. Так что я думаю, если gcc может это сделать, то может ли Xcode? Это просто дикая догадка - я не знаком с Xcode и gcc.Вот краткое изложение моих вопросов:Есть ли способ правильно организовать кучу кода, предварительно скомпилированного и сделанного с помощью gcc make, чтобы он мог быть встроен в пакет Xcode?Имеет ли смысл помещать библиотеку .a в проект Xcode и собирать ее в пакет? Если это имеет смысл, как я могу вызвать функции, определенные в .a после того, как он встроен в пакет?Правильно ли просто заменить все записи main () чем-то другим?

Ответы на вопрос(2)

Ваш ответ на вопрос