Ошибка файла заголовка Mac OS Framework MachineExceptions.h: объявление ничего не объявляет

Фон

Я пытаюсь использовать LSGetApplicationForURL API и нашел здесь очень полезный пример - как получить версию почтового клиента по умолчанию на mac os x?

Однако, когда я пытаюсь скомпилировать код, я получаю эту ошибку:

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:53: ошибка: объявление ничего не объявляет

Когда я открыл MachineExceptions в строке 53, я увидел несколько объявлений unsignedwide, типа, определенного в MacTypes.h. Я узнал, что это часть фреймворка Carbon Core.

Во-первых, я включаю в свой код только заголовки верхнего уровня (на самом деле, используя точный образец кода, приведенный в примере выше). Итак, я не включаю/не трогаю MachineException.h или любой другой заголовочный файл. Хотя, очевидно, есть некоторые зависимости, которые в конечном итоге приводят к этой ошибке.

Некоторые из вещей, которые я пробовал / исследовал:

  1. Я узнал, что Carbon Core устарел в 10.8 (версия, которую я использую) - https://developer.apple.com/library/mac/#releasenotes/General/CarbonCoreDeprecations/ В результате MacTypes.h во фреймворке Carbon Core получился довольно анемичным, куда условно вошли MacTypes.h из / usr/включить/
  2. Я попытался отредактировать MacTypes.h (в структуре Carbon Core) и MachineExceptions.h, чтобы включить MacTypes из /usr/include в соответствии с информацией на странице «устаревшие» выше.
  3. Изменен порядок включения файлов заголовков (сработало для кого-то еще, пока я исследовал это).
  4. Я включаю фреймворки CoreFoundation и ApplicationServices в свой make-файл (используя параметр «-framework»)

Любые отзывы по этой проблеме очень ценятся, так как я потратил много часов, пытаясь разобраться в этом. Я заранее извиняюсь, если что-то здесь является фундаментальным / основным. Я очень новичок в программировании для Mac OS и пытаюсь понять, как устроены фреймворки, а также как их использовать.

Спасибо!


person chicagozfinest    schedule 10.06.2013    source источник


Ответы (1)


Ошибка, которую вы получаете, кажется результатом определения макроса. У вас есть макрос LR, определенный где-то в вашем коде или в определениях препроцессора в вашем проекте? Взгляните на примечание в строке 42 файла MachineExceptions.h о CR. Похоже, у вас есть что-то подобное.
Во всяком случае, я успешно скомпилировал код в примере с проектом инструмента командной строки по умолчанию. Так что, вероятно, ошибка в конфигурации вашего проекта.

person cody    schedule 11.06.2013
comment
В точку, Коди! У меня был конфликтующий символ в моем make-файле. Очистил это и получил успешную компиляцию. Спасибо за вашу помощь!! - person chicagozfinest; 11.06.2013