Objective-C ++ компилируется для iPhone, но не симулятор - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть библиотека C ++, которую я хочу добавить в свой проект iphone.

В одном заголовочном файле я объявляю

@interface a
{
   cppvirtualclass V;
}

Это прекрасно компилируется для устройства iPhone с настройками выпуска. Однако он отказывается компилировать для симулятора с отладочной информацией или без нее.

выдает ошибку

error: type 'V' has virtual member functions.

Есть ли выход из этого или я должен определять только конкретные классы C ++?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2010

По умолчанию Objective C не запускает конструкторы для переменных экземпляра C ++, когда создает объекты Objective C. Это означает (я думаю), что vtable объекта C ++ не будет правильно инициализирован.

Попробуйте сделать переменную вашего экземпляра указателем и выделить ее в методе init (и уничтожить ее в dealloc / finalize).

Или

попробуйте установить "Call C ++ по умолчанию Ctors / Dtors в Ovjective-C" в ваших настройках генерации кода.

(GCC_OBJC_CALL_CXX_CDTORS, -fobjc-call-cxx-cdtors)

0 голосов
/ 02 мая 2010

Кроме того, Objective-C ++ больше не является разрешенным языком для разработки на iPhone (для 4.0). Вы можете использовать Objective-C, C и C ++, но не Objective-C ++.

...