2009-11-11 1 views
0

У меня есть приложение Mac, которое I должно построить против Mac OS 10.4 SDK по различным причинам, не зависящим от моего контроля. Учитывая, что минимальная версия ОС моей версии будет 10,5. (Я знаю, я знаю ... но я не могу дать больше деталей, чем указано выше, чтобы оправдать, почему это так.)Получение указателя proc на API-интерфейс Carbon во время выполнения

В Mac OS 10.5 SDK есть API, FSMatchAliasBulk, для которого я не могу найти хороший эквивалент в SDK 10.4. Зная, что я буду работать на Mac OS> = 10.5, как я могу получить доступ к FSMatchAliasBulk во время выполнения?

ответ

1

Во-первых, ознакомьтесь с «Как работает кросс-разработка» в справке Xcode, выбрав «Документация разработчика» в меню справки Xcode. В окне документации введите «How Cross-Development Works» и нажмите «Возврат». Там вы увидите больше информации.

И вот что, я думаю, вам нужно будет сделать: загрузить инфраструктуру CoreServices и затем получить указатель на функцию для этой функции, если вы знаете, что работаете в Mac OS X 10.5 (проверьте функциональность Gestalt на определите это).

Вот пример, который не тестировался, но должен привести вас в правильном направлении:

CFBundleRef systemBundle = NULL; 

short result = LoadFrameworkBundle(CFSTR("CoreServices.framework"), &systemBundle); 

if (result == 0) { 
typedef OSStatus (FSMatchAliasBulkProcPtr) (const FSRef*, unsigned long, AliasHandle, short*, FSRef*, Boolean*, FSAliasFilterProcPtr, void*); 

FSMatchAliasBulkProcPtr myFSMatchAliasBulk = (FSMatchAliasBulkProcPtr) CFBundleGetFunctionPointerForName(systemBundle, CFSTR("FSMatchAliasBulk")); 

if (myFSMatchAliasBulk) { 
// call FSMatchAliasBulk 
    OSStatus status = myFSMatchAliasBulk(....); 
} 
} 
+0

Отлично, спасибо! – fbrereto

Смежные вопросы