Фон
Я пытаюсь использовать 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
или любой другой заголовочный файл. Хотя, очевидно, есть некоторые зависимости, которые в конечном итоге приводят к этой ошибке.
Некоторые из вещей, которые я пробовал / исследовал:
- Я узнал, что Carbon Core устарел в 10.8 (версия, которую я использую) - https://developer.apple.com/library/mac/#releasenotes/General/CarbonCoreDeprecations/ В результате
MacTypes.h
во фреймворке Carbon Core получился довольно анемичным, куда условно вошлиMacTypes.h
из / usr/включить/ - Я попытался отредактировать
MacTypes.h
(в структуре Carbon Core) и MachineExceptions.h, чтобы включить MacTypes из /usr/include в соответствии с информацией на странице «устаревшие» выше. - Изменен порядок включения файлов заголовков (сработало для кого-то еще, пока я исследовал это).
- Я включаю фреймворки CoreFoundation и ApplicationServices в свой make-файл (используя параметр «-framework»)
Любые отзывы по этой проблеме очень ценятся, так как я потратил много часов, пытаясь разобраться в этом. Я заранее извиняюсь, если что-то здесь является фундаментальным / основным. Я очень новичок в программировании для Mac OS и пытаюсь понять, как устроены фреймворки, а также как их использовать.
Спасибо!