2017-02-08 4 views
1

Я пытаюсь скомпилировать проект C++ в среде MacOSX. Я никогда не касался системы Apple раньше, поэтому я все еще очень смущен настройками среды XCode и всеми, но я вроде как управляю.Ошибка компиляции в Foundation framework и XCode8.0

Что меня беспокоит то, что я получаю ошибки компиляции из в рамках Фонда:

NSObject.h:10:1: error: expected unqualified-id 
@class NSInfocation, NSMethodSignature, etc 
^ 

Это смотрит на меня как заголовок NSObject компилируется как обычный заголовок C++ (и «File Inspector «view на самом деле говорит мне, что NSObject.h« По умолчанию заголовок «C». Я подозреваю, что именно поэтому отображается ошибка компиляции, но я не знаю, как это исправить. Не следует ли XCode сам понимать, что заголовки Foundation должен быть скомпилирован как файлы Objective-C?

Система MacOSX El C apitan 10.11.6 с XCode 8.0 (8A218a), с компиляцией с MacOSX10.12 sdk.

Любая помощь?

[EDIT] в качестве минимального рабочего примера:

создать пустой, проект по умолчанию в XCode с типом "Библиотека", структура STL (C++), цель MacOSX. Я пытаюсь скомпилировать его, все идет хорошо. Я добавляю ссылку на Foundation.framework на этапах сборки, и все еще хорошо. Я создаю .pch, в котором я #import <Framework/Framework.h> и указываю его как заголовок префикса в настройках сборки. Когда я пытаюсь скомпилировать снова, сборка завершается с ошибками выше.

+0

http://stackoverflow.com/help/mcve – xaxxon

+0

Это чистый проект на C++ или смешанный? –

+0

Я бы сказал, что чистый проект: единственными файлами Obj-C++ являются привязки к ОС (например, 'NSString' или' NSFileHandle'). Тот же проект также построен на средах Windows и Unix с соответствующими различиями. – phagio

ответ

0

Я наконец выяснил, что мне пришлось обернуть #import <Foundation/Foundation.h> в предпроцессоре #ifdef __OBJC__. Кажется, этот def добавлен XCode, и я не знал об этом. Возможно, это так, но я немного подожду, прежде чем отметить это как ответ.

Смежные вопросы