Как вызвать функцию Carbon из проекта Qt Creator? - PullRequest
2 голосов
/ 28 апреля 2011

Я пытаюсь использовать функцию ChangeWindowAttributes () в проекте Qt Creator на Mac OS X. Но я не могу собрать проект.

Что я пробовал:

#include <MacWindows.h>

Результат (компилятор): файл не найден

#include <Carbon/Carbon.h>

// Or the same:
#include </Developer/Headers/FlatCarbon/MacWindows.h>

Результат (компилятор): ChangeWindowAttributes не был объявлен в этой области

#include <Carbon/Carbon.h>
extern OSStatus ChangeWindowAttributes (
   WindowRef window,
   WindowAttributes setTheseAttributes,
   WindowAttributes clearTheseAttributes
);

// And in *.pro file:
LIBS += -framework Carbon

Результат (компоновщик): неопределенные символы ChangeWindowAttributes (...

Где я ошибаюсь?

По мнению Google, кажется, что все уже знают, как его включить, поэтому нигде нет руководств. Может быть, у кого-то здесь есть ссылка на руководство иличто-то?

1 Ответ

1 голос
/ 28 апреля 2011

По умолчанию QT Creator создает ваш проект в архитектуре процессора вашего Mac. Сами библиотеки поставляются в универсальных двоичных файлах x86 и x86_64. Это если вы используете предустановленный SDK от Nokia.

Если вы используете комбинацию ОС / Mac с 64-битной поддержкой, например 10.6 на новом Intel Mac, он будет встроен в x86_64. Углеродные звонки по-прежнему доступны для вашего кода, но только те, которые помечены как 64-битные совместимые. Откройте MacWindows.h и найдите ChangeWindowAttributes. Вы увидите в комментарии:

 *  Availability:
 *    Mac OS X:         in version 10.0 and later in Carbon.framework [32-bit only]
 *    CarbonLib:        in CarbonLib 1.0 and later
 *    Non-Carbon CFM:   not available

Если вам нужно вызвать эту (и другую 32-битную) функцию, вам придется заставить Creator встроить ее в 32-битную (x86). Добавьте эти строки в ваш файл .pro:

CONFIG -= x86_64
CONFIG += x86

Очистить все и восстановить.

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