2011-11-08 7 views
3

私はffmpegのdylibを統合したXcodeでCocoaプロジェクトを構築しました。 Mac OSX 10.6と10.7ではうまく動作しますが、10.5ではクラッシュします。私は10.6でコンパイルしています。助言がありますか?ありがとう!ここでffmpeg dylibを持つCocoaアプリケーションがMac OSX 10.5でクラッシュする(ただし10.6または10.7ではありません)

は、私はそれをコンパイルした方法は次のとおりです。

に./configure --disable-静的--enable-共有--disable-OUTDEV = SDL --enable-ランタイムcpudetect --disable- bizlib --disable-libfreetype --disable-libopenjpeg --enable-zlib --arch = x86_64 --sysroot =/Developer/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 
+0

リンク先のffmpegライブラリを作成しましたか、それともsomeheresからダウンロードしましたか? –

+0

@MichaelDautermann - 自分で作成しました –

答えて

1

libavcodecが10.5で完全に64ビット互換ではないという問題があると思います。私は100%これの特定ではない。

64ビットサポートは10.5で完全にはめ込まれていなかったので、64ビットネイティブアプリケーションの大部分では、私は明示的にO. 10.5未満で実行しているときに私のバイナリの32ビット版を実行する

これを行うには、これらのフラグであなたの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> 

これは、あなたのアプリがLeopardのマシンと64ビットモードで32ビットモードで動作保証されます(適切な場合)10.6 &新しいマシンにインストールしてください。

1

10.6でコンパイルされたバイナリは、10.5以前でサポートされていない(存在しなかった)新しいdyld loadコマンドを追加するため、以前のOS Xでは動作しません。

浮動小数点フラグに-mmacosx-version-min=10.5を追加しようとしていますが、リンクステップに追加していないため、リンカは10.6のdyldを生成します。

上記の理由が原因ですが、10.6 SDKを使用するとさらに問題が発生する可能性があります.Leopardをターゲットにする場合は、実際に10.5 SDKを使用する必要があります。 10.6 SDKの使用は、10.6固有の機能が使用されていない場合は10.5で動作しますが、コンパイラがコンパイル時に警告を出すことはないため、使用されるとクラッシュします。

関連する問題