Я пытаюсь описать мою проблему ясно для вас, поэтому она может быть немного длинной, и я действительно ценю это, если вы сможете прочитать ее и дать какое-то предложение. Благодарю.
У меня есть проект библиотеки, назовем его MyCppLib
, который содержит некоторый устаревший код c ++, и я добавляю класс адаптера в этот проект, чтобы я мог использовать его без использования target-c ++ в другом проекте. Вот обзор проекта MyCppLib
.
Проект MyCppLib
- немного устаревшего кода C ++
- Adapter.h
- Adapter.mm
У меня есть другой проект, назовем его проектом Main
, в котором в качестве статической библиотеки используется проект MyCppLib
. Поэтому я использую xCode 4 для компиляции MyCppLib
, и получаю libMyCppLib.a
, и конфигурирую Main
project в xCode 4, чтобы связать его с Main
project. Вот обзор проекта Main
.
Проект Основной
- Некоторые классы Objective-C , которые НЕ содержат файл '.mm'
- Adapter.h
- libMyCppLib.a как статическая библиотека
Пока я компилирую проект Main
в xCode 4, я получаю несколько ошибок:
Неопределенные символы для архитектуры armv6:
«оператор new (без знака long)», ссылка на который:
- [Adapter init] в libMyCppLib.a (Adapter.o)
my :: cpp :: пространство имен :: MyCppClass :: MyCppClass () в libMyCppLib.a ( MyCppClass .o)
... некоторые другие подобные ошибки
ld: символ (ы) не найден для архитектуры armv6
collect2: ld вернул 1 статус выхода
Я полагаю, что это возможно, потому что проект Main
не имеет возможности target-c ++, поэтому я добавляю файл .mm в проект Main
. И теперь Main
проект должен выглядеть так:
Проект Основной
- Некоторые классы Objective-C , которые НЕ содержат файл '.mm'
- Adapter.h
- libMyCppLib.a как статическая библиотека
- DummyObjCpp.h
- DummyObjCpp.mm
Затем я компилирую проект Main
, и он преуспевает !
Итак, наконец , мой вопрос: как я могу настроить проект Main
, чтобы иметь возможность Objective-C ++ без добавления файла '.mm'?