Изменение типа исходного файла на Objective-C ++ вызывает ошибку компоновщика при использовании GameKit

Поэтому я использую Xcode 6.1 в своем приложении Objective-C.
Мое приложение использует каркас GameKit.

Я пытался вызвать внешние методы C ++ из моего GameViewController (который является источником Objective-C.)

Чтобы компилировать GameViewController.mm, мне пришлось вручную установить тип «Objective-C ++ Source».

Однако, хотя исходный код теперь компилируется, он не сможет связать с:

    Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_GLKViewController", referenced from:
_OBJC_CLASS_$_GameViewController in GameViewController.o
"_OBJC_METACLASS_$_GLKViewController", referenced from:
_OBJC_METACLASS_$_GameViewController in GameViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я могу избавиться только от ошибки компоновщика, установив тип обратно в ‘Objective-C Source’ и удалив вызовы внешних функций C ++.

Почему компоновщик не работает, если мой источник скомпилирован как «Objective-C ++ Source» вместо типа «Objective-C Source»?

Обратите внимание, что я правильно ссылаюсь на GameKit на этапах сборки.

5

Решение

ХОРОШО.
Оказывается странным, но:

Я связывался с GameKit, а не с GLKit.
Исправление: ссылка на GLKit.

Теперь странная часть заключается в том, что отсутствие связи с GLKit не вызывает проблем, если контроллер представления построен как источник Objective-C. Это создает проблемы, если оно построено как источник Objective-C ++.

Удивительно, но факт.

3

Другие решения


По вопросам рекламы [email protected]