Russian Qt Forum
Октябрь 02, 2024, 01:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Поломался вызов родного API на маке...  (Прочитано 2981 раз)
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
Гость
« Ответ #1 : Ноябрь 18, 2010, 21:20 »

Нужно добавить это в файл проекта:

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

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

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Ноябрь 18, 2010, 21:24 »

В ассистенте же.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Ноябрь 18, 2010, 22:20 »

Пантер
Там нету, ему нужны системные маковские либы

serkol
/System/Library/Frameworks
/Library/Frameworks

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

IOKit для данного кода, кстати, не нужен.
« Последнее редактирование: Ноябрь 18, 2010, 22:22 от Авварон » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.114 секунд. Запросов: 23.