2010-03-04 14 views
5

Ich habe ffmpeg iphone Port in meine Bibliothek hinzugefügt und ich kann einige seiner Funktionen wie avcodec_init(), .. ohne Fehler verwenden. Aber wenn ich diesen Funktionsaufruf enthalten "avcodec_register_all" Xcode Fehler geben nach der KompilierungFehler beim Kompilieren des Xcode-Projekts (IPhone)

Die Fehlermeldung lautet:

* --------------- ld: ldr 12-Bit-Verschiebung außerhalb des Bereichs (4276 max +/- 4096) in _CFRelease $ stub in _CFRelease $ stub von /Users/foxit/Documents/CameraTest/build/CameraTest.build/Debug-iphoneos/CameraTest.build/Objects-normal/ARMv6/Kameratest

Befehl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 mit Exit-Code fehlgeschlagen 1

* -------------

Weiß jemand, was damit falsch ist?

Grüße,

Raghu

Antwort

1

Gleiche wie this problem?

Vorschlag ist:

Bitte wählen Sie Deployment-Ziel "iPhone OS 3.0" oder früher. Es ist bekannt, Xcode-Linker-Problem mit Bereitstellung Zielen "iPhone OS 3.1" und höher.

+0

Nein, das ist nicht das Problem, die gleiche Sache in einem anderen Xocde-Projekt arbeiten, die ich kann es aus bestimmten Gründen –

+0

Ich sah auch dieses Problem und das Nachbestellen meiner Frameworks hat nicht funktioniert. Nachdem ich mein Build-Ziel von 3.1 auf 3.0 geändert habe, verschwindet das Problem. – jtrim

3

Dieses Problem besteht in iPhone OS 3.1 oder höher beim Erstellen in Xcode. Versuchen Sie, die Verknüpfungsreihenfolge der Bibliotheken in der Link-Bibliotheksphase Ihres Ziels erneut zu verknüpfen. Ich habe dieses Problem in diskutiert: http://www.galloway.me.uk/2009/12/ldr-12-bit-displacement-out-of-range/

Es gibt ein inhärentes Problem in iPhone SDK 3.1 und höher. Ich werde warten müssen, bis Apple es repariert oder wir müssen einige Trail und Fehler Änderungen vornehmen.

In unserem Fall würde einfach nur libavfilter und libavcodec bis zur letzten nachbestellen.

+0

Hi Raj, Kennen Sie eine Möglichkeit, rohen Oberflächenpuffer in AvFrame() zu konvertieren? Ich versuche, eine Videoaufzeichnung Anwendung zu schreiben. Ich bin in der Lage, die Rohdaten des Bildes (Bildschirm) zu halten, aber nicht in der Lage, die Umwandlung von diesen Rohdaten in AVframe zu finden, um es zu kodieren. Danke –

+1

Folgen Sie der Datei output-example.c in der Quelle der FFMpeg-Quelle. Implementieren Sie die erforderlichen Methoden daraus. Überschreiben Sie die Methode fill_yuv_image(), sodass Sie Ihre RGB-Daten mit der Methode sws_scale() in YUV konvertieren und diese Rohdaten in AVFrame füllen, das als Argument an fill_yuv_image() übergeben wird. –

0

Da ich ein CMake-generiertes XCode-Projekt verwende, habe ich nicht die Flexibilität, die ich möchte, wenn ich meine Verbindungslinien neu anordne. Ich am ld starrte (1) man-Seite für eine Weile und fanden diese:

-no_order_inits

„Wenn die -order_file Option nicht verwendet wird, legt der Linker aus Funktionen in Objekt Datei um und verschiebt alle initializer Routinen zu Beginn des der __TEXT Abschnitt und Terminator Routinen zum Ende. Verwenden sie diese Option die automatische Neuanordnung initializers und Terminatoren zu deaktivieren.“

Wenn Sie dies der Verbindungslinie hinzufügen, verschwindet der Fehler.

2

Ich konnte den Fehler loswerden, indem ich die Compileroption "Compile For Thumb" deaktivierte.

hier sind also meine Einstellungen:

Base SDK: iPhone Device 4.0 
iPhone OS Deployment Target: 3.1.3 

I -no_order_inits den Linker-Optionen hinzugefügt haben, aber das funktionierte nicht für mich arbeiten.

Wenn Sie ein Implementierungsziel von 3.0 auswählen, wird auch der Fehler nicht angezeigt.

BTW, ich benutze auch die FFMPEG und libMMS-Bibliotheken.

1

Für mich auf 4.2 und ffmpeg verwenden, wurde Lösung "Optimized (ARMv7)" im Feld "Architectures" statt angeben "Standard (armv6 armv7)" wenn das kann Ihnen helfen ...

Verwandte Themen