Хорошо, я думаю, что нашел по крайней мере одно решение проблемы.
Дублированная основная ошибка была вызвана кучей основных записей в моем исходном коде.Когда код был скомпилирован gcc make, я предполагаю, что автор определил своего рода порядок компиляции, чтобы дублирование сети не было проблемой.(Если вы знаете, как это сделать, пожалуйста, дайте мне знать. Я почти не знаю, как создавать инструменты.) Но когда я просто добавляю всю папку с исходным кодом в свой проект Xcode, конечно, Xcode будет жаловаться во время компоновки ...
Поскольку я не хотел изменять исходный код (поскольку библиотека исходного кода не разработана мной), я решил использовать другую стратегию для обхода этой проблемы.
Если вашВ вашем собственном коде обнаружена повторяющаяся основная ошибка, вы можете перестать читать здесь.Но если вы похожи на меня, с кучей скомпилированного исходного кода gcc и очень нуждаетесь в пакете, но не знаете, что делать, я могу помочь.
Хорошо, здесьвот что я сделал:
Я установил пустое рабочее пространство.
Я создал проект статической библиотеки C / C ++.
Импортировать всю мою папку с исходным кодом в проект статической библиотеки.
Установить некоторый путь поиска заголовка для проекта статической библиотеки.
Сборка проекта статической библиотеки.(Теперь у меня есть библиотека .a, с которой я могу связать)
Я настроил другой проект с целью комплектации.
Впроект пакета -> этапы сборки -> связать двоичные файлы с библиотеками, добавьте только что созданную библиотеку .a
В проекте пакета -> изменить схему -> построить, добавьтеСтатический проект библиотеки в схему и переместите его вверх по списку, чтобы он был построен до моего проекта пакета.
Затем добавьте .h файлы моего проекта библиотеки в мой проект пакета как ссылки.
После этого добавьте .c файл в мой пакетный проект, который в основном функционирует как оболочка.Я выбрал функцию, которую хочу вызвать в Unity, написал функцию-обертку в новом файле .c и смог собрать пакет.
После нескольких проб и ошибок ябыл в состоянии импортировать пакет в Unity и был в состоянии вызвать функцию тестирования из Unity.
Я был очень рад этому!Хотя он еще не завершен, я думаю, что это вселяет надежду, и я уверен, что теперь могу использовать исходный код!И самое лучшее в этом решении - мне не нужно изменять код библиотеки, разработанный другими.Всякий раз, когда они обновляют свой код, я просто обновляю свою библиотеку .a и все!
Хотя я перечислил 11 шагов, я все еще чувствую, что есть много деталей, которые я пропустил.Итак, вот мои ссылки:
Я следовал этому руководству, чтобы встроить свой исходный код в статическую библиотеку: http://www.ccnx.org/?post_type=incsub_wiki&p=1315
Я следовал по этому блогу, чтобы связатьстатическая библиотека для моего кода пакета и фаз сборки твист и поисковых заголовков: http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/
Я следовал этому документу, чтобы импортировать свой пакет в Unity3D Pro в качестве плагина: http://unity3d.com/support/documentation/Manual/Plugins.html
Я настоятельно рекомендую второй справочник, потому что именно это решило мою проблему!
Хотя проблема почти решена, есть еще несколько вещей, которых у меня нет 't выяснил:
- Я не знаю, нужна ли вообще функция обертки.Я попробую это завтра и вернусь к обновлению.
- Я возвращаюсь к обновлению: функция обертки НЕ обязательна.Просто убедитесь, что у вас есть все заголовки в вашем проекте пакета, и вы сможете использовать все структуры данных и функции вызова, определенные в ваших заголовках.
- Я не использовал класс NSBundle, хотя я прочиталнесколько документов об этом.Раньше я думал об использовании этого класса для доступа к моей библиотеке .a, инкапсулированной в моем комплекте, но когда я нашел решение, которое написал выше, я не попробовал этот класс.
Наконец, если у вас есть лучшее решение, пожалуйста, не стесняйтесь, дайте мне знать!