Какао-приложение с ffmpeg dylibs вылетает на Mac OSX 10.5 (но не на 10.6 или 10.7) - PullRequest
3 голосов
/ 08 ноября 2011

Я создал проект Какао в XCode, который интегрирует dylibs ffmpeg. Он отлично работает на Mac OSX 10.6 и 10.7, но вылетает на 10.5. Я собираю на 10.6. Какие-либо предложения? Спасибо!

Вот как я это скомпилировал:

. / Configure --disable-static --enable-shared --disable-outdev = sdl --enable-runtime-cpudetect --disable-bzlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --arch = x86_64 --sysroot = / Разработчик / SDKs / MacOSX10.6.sdk --extra- cflags = "- isysroot /Developer/SDKs/MacOSX10.6.sdk -DMACOSX_DEPLOYMENT_TARGET = 10.5 -mmacosx-версия-мин = 10,5"

Вот отчет о сбое:

Process:         MyApp [27963]
Path:            /Applications/MyApp.app/Contents/MacOS/MyApp
Identifier:      com.mycompany.MyApp
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  launchd [66]

Interval Since Last Report:          123326 sec
Crashes Since Last Report:           2
Per-App Interval Since Last Report:  0 sec
Per-App Crashes Since Last Report:   2

Date/Time:       2011-11-06 15:29:51.154 -0500
OS Version:      Mac OS X 10.5.8 (9L31a)
Report Version:  6
Anonymous UUID:  D86EA304-DCDA-4855-9124-69FE8C5BDE1B

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread:  0

Dyld Error Message:
  Library not loaded: @rpath/libavcodec.dylib
  Referenced from: /Applications/MyApp.app/Contents/MacOS/../Frameworks/MyEngine.framework/Versions/A/MyEngine
  Reason: no suitable image found.  Did find:
    /Applications/MyApp.app/Contents/Frameworks/MyEngine.framework/Versions/A/Libraries/libavcodec.dylib: unknown required load command 0x80000022

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Двоичные файлы, скомпилированные в 10.6, не работают в более ранних версиях OS X, потому что 10.6 добавляет новые команды загрузки dyld, которые не поддерживаются (не существовали) в 10.5 и более ранних версиях.

Хотя вы пытаетесь добавить -mmacosx-version-min=10.5 к флагам, что похвально, вы не добавили его к шагу связывания, поэтому компоновщик все равно выдаст поле для 10.6.

Выше приведена причина ошибки, но вы можете получитьвозникли проблемы с использованием 10.6 SDK - вам действительно следует использовать 10.5 SDK, если вы хотите использовать Leopard.Использование 10.6 SDK может работать на 10.5, если не используются специфичные для 10.6 функции, но при их использовании произойдет сбой, поскольку компилятор не будет предупреждать о них во время компиляции, поскольку ожидается, что они существуют.

1 голос
/ 15 ноября 2011

Я полагаю, что проблема, с которой вы сталкиваетесь, заключается в том, что libavcodec не полностью совместим с 64-битной версией 10.5.Я не уверен на 100% в этом.

64-битная поддержка не была полностью реализована в 10.5, и поэтому для большинства моих собственных 64-битных приложений я должен явно сказать ОСзапустить 32-разрядные версии моего бинарного файла при запуске под 10.5.

Для этого перейдите в файл Info.plist и добавьте следующие флаги:

<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
    <key>i386</key>
    <string>10.5.0</string>
    <key>ppc</key>
    <string>10.5.0</string>
    <key>x86_64</key>
    <string>10.6.0</string>
</dict>

Это обеспечитВаше приложение работает в 32-разрядном режиме на компьютерах Leopard и в 64-разрядном режиме (если это необходимо) на компьютерах с 10,6 и более поздними версиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...