Сбой сборки при включении файлов C ++ - PullRequest
1 голос
/ 14 июля 2011

У меня есть проект XCode ( Objective-C ), к которому я пытаюсь добавить библиотеку C ++ , которую я кодировал ранее. Как только я добавляю один .cpp или .mm файл, процесс сборки будет зависать от случайных вещей, обычно при создании заголовка префикса. То же самое происходит, когда я включаю .c файлов. По сути, я могу использовать только файлы .m в моей цели. Последняя ошибка, которую я получил, была:

SDKpath / государственные / CoreGraphics.framework / Headers / CGFont.h: 53:

ошибка: ожидаемый конструктор, деструктор или преобразование типов перед ';' лексема

Код в этой строке:

CG_EXTERN CGFontGetGlyphsForUnichars(CGFontRef font, void* chars, CGGlyph* glyphs, int len)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);

Я почти уверен, что код не является причиной этой проблемы, но я не могу понять, что не так с моими настройками сборки. Если я избавлюсь от этого включения, то процесс сборки отключится с первым битом кода Objective-C, к которому он попадет.

Это мой префиксный заголовок:

#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <IOSurface/IOSurfaceAPI.h>
#import "CGColorUtil.h"
#endif

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Я идиот.По какой-то причине в функции отсутствовал тип возвращаемого значения.

CG_EXTERN void CGFontGetGlyphsForUnichars(CGFontRef font, void* chars, CGGlyph* glyphs, int len)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);
0 голосов
/ 14 июля 2011

Вам необходимо установить цель компиляции как Objective-C ++ или изменить расширение файла на .mm ваших файлов кода C / C ++. То же самое для всей библиотеки.

Я также уверен, что компилятор всегда определяет макрос OBJC, поэтому, если вы не хотите включать этот код, вам нужно найти другой способ скрыть его от компилятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...