Однако при компиляции 64-битной версии CountComponents возвращает только 85 компонентов (ни один из которых не является кодеками QuickTime, которые я ищу).
Кодеки QuickTime, использующие API QuickTime C, являются только 32-разрядными, и Apple не перенесла этот API на 64-разрядные. Обратите внимание, что для приложений вы можете использовать QTKit, новый Objective-C API. QTKit пытается использовать QuickTime X для воспроизведения фильма; если это невозможно из-за отсутствия подходящего кодека QuickTime X, он возвращается к QuickTime 7, который, в свою очередь, может использовать старые компоненты QuickTime. Это прозрачно для разработчиков, использующих QTKit.
Возможно ли, что в 64-разрядном приложении Диспетчер компонентов отображает только 64-разрядные компоненты?
Да, это правильно. Обратите внимание, что невозможно смешивать 32-битный и 64-битный код в одном и том же процессе, поэтому имеет смысл, что диспетчер компонентов будет ограничивать запросы компонентами, которые могут быть загружены в процесс: 32-битные компоненты для 32-битных компонентов. битовый процесс, 64-битные компоненты для 64-битного процесса.
В каком случае, возможно, эта функция может быть встроена в 32-битную разделяемую библиотеку и вызываться из моего 64-битного приложения?
Как описано выше, вы не сможете загрузить 32-битную динамическую библиотеку в 64-битный процесс. Вы можете создать отдельный 32-битный исполняемый файл помощника и использовать его для получения списка 32-битных компонентов. Вы можете поделиться исходным кодом, в котором перечислены компоненты, между вашим основным приложением и исполняемым файлом помощника, но они должны быть отдельными исполняемыми файлами.
Фактически, вы можете увидеть это в действии, если вы используете QuickTime X для воспроизведения фильма, для которого требуется 32-битный компонент QuickTime: 32-битный процесс QTKitServer создается для декодирования фильма с использованием компонента QuickTime и отправки результаты возвращаются к 64-битному QuickTime X. Джон Сиракуза описывает это в своем обзоре Snow Leopard . Вы также можете взглянуть на раздел Принятие QuickTime X для воспроизведения в Руководстве по программированию приложений QTKit .