Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: serkol от Ноябрь 18, 2010, 08:15



Название: Поломался вызов родного API на маке...
Отправлено: serkol от Ноябрь 18, 2010, 08:15
Мне пришлось переставить Mac OS на диск, на котором уже был Qt 4.6.3. Потом я обновил Qt до 4.7. После всех этих процедур поломался вызов native API.

Вот пример из документации (Qt for Mac OS X - Specific Issues)

Код:
#ifdef Q_WS_MAC
     #include <CoreFoundation/CFURL.h>
     #include <CoreFoundation/CFBundle.h>
#endif
...
#ifdef Q_WS_MAC
     CFURLRef appUrlRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
     CFStringRef macPath = CFURLCopyFileSystemPath(appUrlRef,
                                            kCFURLPOSIXPathStyle);
     const char *pathPtr = CFStringGetCStringPtr(macPath,
                                            CFStringGetSystemEncoding());
     qDebug("Path = %s", pathPtr);
     CFRelease(appUrlRef);
     CFRelease(macPath);
 #endif

Ошибка:

Код:
g++ -headerpad_max_install_names -o findfiles.app/Contents/MacOS/findfiles main.o window.o moc_window.o   -F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore 
Undefined symbols:
  "_CFBundleGetMainBundle", referenced from:
      Window::browse()     in window.o
  "_CFBundleCopyBundleURL", referenced from:
      Window::browse()     in window.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [findfiles.app/Contents/MacOS/findfiles] Error 1
make: Leaving directory `/Developer/Examples/Qt/dialogs/findfiles-build-desktop'
The process "/usr/bin/make" exited with code %2.
Error while building project findfiles (target: Desktop)
When executing build step 'Make'

Кто-нибудь сталкивался с таким?





Название: Решено
Отправлено: serkol от Ноябрь 18, 2010, 21:20
Нужно добавить это в файл проекта:

Код:
macx: LIBS             += -framework IOKit -framework CoreFoundation

Кстати, раньше, наверное в версии 4.6, когда я создавал новый проект в Qt Creator, был список frameworks которыми будет пользоваться этот проект, например Phonon, SQLite и т.д. Я не вижу такого в Qt Creator 2.0.1. Теперь что, единственный вариант - редактировать руками файл проекта? А где взять список правильных названий всех имеющихся frameworks, чтобы не было ошибок в файле проекта?


Название: Re: Поломался вызов родного API на маке...
Отправлено: Пантер от Ноябрь 18, 2010, 21:24
В ассистенте же.


Название: Re: Поломался вызов родного API на маке...
Отправлено: Авварон от Ноябрь 18, 2010, 22:20
Пантер
Там нету, ему нужны системные маковские либы

serkol
/System/Library/Frameworks
/Library/Frameworks

Дальше трудностей думаю не будет.

IOKit для данного кода, кстати, не нужен.