Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: spectre71 от Май 12, 2010, 20:52



Название: [Решено] Проблемы с линковкой Qt 4.6/mac os 10.6
Отправлено: spectre71 от Май 12, 2010, 20:52
Undefined symbols:
"_LSCopyApplicationForMIMEType", referenced from:
sbw::TDefTxtFileViewer::findViewer() in sbw_txt_file_show.o
"___CFConstantStringClassReference", referenced from:
cfstring=text/plain in sbw_txt_file_show.o
"_CFStringGetCString", referenced from:
sbw::TDefTxtFileViewer::findViewer() in sbw_txt_file_show.o
"_CFURLCopyFileSystemPath", referenced from:
sbw::TDefTxtFileViewer::findViewer() in sbw_txt_file_show.o

==============================================

Все методы в данном кусоке кода:
Код
C++ (Qt)
#include <CoreServices/CoreServices.h>
#include <ApplicationServices/ApplicationServices.h>
 
//....
//....
 
 
bool TDefTxtFileViewer::findViewer(void) {
 CFURLRef outAppURL;
 CFStringRef inMIMEType = CFSTR("text/plain");
 LSRolesMask inRoleMask = kLSRolesEditor;
 OSStatus errors = LSCopyApplicationForMIMEType(inMIMEType, inRoleMask, &outAppURL);
 if (errors)
 {
   inRoleMask = kLSRolesAll;
   errors = LSCopyApplicationForMIMEType(inMIMEType, inRoleMask, &outAppURL);
 }
 if (!errors)
 {
   char buffer[4096];
   CFStringRef s = CFURLCopyFileSystemPath(outAppURL, kCFURLPOSIXPathStyle);
   CFStringGetCString(s, buffer, 4096, 0);
   Viewer = QString(buffer);
 }
 return !Viewer.isEmpty();
}

С QT 4.5.2  такая проблема отсутствовала, все линковалось.
После смены версии QT, не линкуйтся данные методы.
Погуглил, ничего не нашел.
Возможно необходимо явное подключение либы в проекте. Какой, хбз?








Название: Re: Проблемы с линковкой Qt 4.6/mac os 10.6
Отправлено: pastor от Май 12, 2010, 23:31
LSCopyApplicationForMIMEType  -    ApplicationServices framework
CFURLCopyFileSystemPath - CoreFoundation framework
CFStringGetCString - CoreFoundation framework

Подключи явно данные фреймворки


Название: Re: Проблемы с линковкой Qt 4.6/mac os 10.6
Отправлено: spectre71 от Май 13, 2010, 09:48
Если я правильно понял нужно добавить в pro-файле:

Код:
macx {
LIBS += -framework ApplicationServices
LIBS += -framework CoreFoundation
}

К сожелению, не имею MAC под рукой для проверки.


Название: Re: Проблемы с линковкой Qt 4.6/mac os 10.6
Отправлено: spectre71 от Май 13, 2010, 14:56
Спасибо, pastor!
Все слинковалось.


Название: Re: [Решено] Проблемы с линковкой Qt 4.6/mac os 10.6
Отправлено: Авварон от Май 13, 2010, 21:57
по идее надо просто писать -framework Carbon
а вообще карбон как бы депрекейтед уже...