PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : heftgier Ärger mit libpng



axeljaeger
15-09-2002, 16:00
Ich schreibe gerade ein Programm, das Qt und SDL mit SDL_image verwendet. Bisher lief alles problemlos, aber seitdem ich SDL_image eingebaut habe, kriege ich nach dem kompilieren, wenn ich das Programm ausführen möchte, einen Segfault, und zwar mit folgender Begründung:

libpng warning: Application was compiled with png.h from libpng-1.2.1
libpng warning: Application is running with png.c from libpng-1.0.12
libpng error: Incompatible libpng version in application and library

Das kenne ich schon, so hatte sich der Opera immer verabschiedet. Damit hatte ich mich abgefunden, hab einfach Galeon verwendet. Als ich das gelesen habe, hab ich verucht, Opera zu starten, und das hat funktioniert. Ich würde auch den Opera wieder abgeben, wenn ich dafür mein Programm wieder zum Laufen kriegen würde.

anda_skoa
15-09-2002, 16:45
Wahrscheinlich wurden die beiden Bibliotheken gegen andere Versionen der libpng gelinkt.

Schau mal mit ldd nach, ob das so ist
Beispiel:
#> ldd $QTDIR/lib/libqt.so

Wenn ja, mußt du eine der beiden neu kompilieren/linken.

Ciao,
_

axeljaeger
15-09-2002, 20:32
Nein, daran lag es nicht. libSDL_image ist gegen

libpng.so.3 => /usr/lib/libpng.so.3

gelinkt, so wie es sich gehört, und qt ist gar nicht gegen libPNG gelinkt. In meiner Qt-Konfiguration steht: png...yes(qt), daraus schließe ich das es um eine eingebaute libPNG handeln muß. Im übrigen benutze ich Mandrake 8.2, das heist, die Standart Qt Lib ist die 2.3.2, ich verwende aber eine 3.0.3 zum programmieren.

anda_skoa
15-09-2002, 20:46
Naja, dann ist halt die Qt Version von libpng eine andere Version.

In deinem ersten posting steht, dass mit 1.2.1 kompiliert wurde, aber 1.0.12 läuft.

aus png.h:


* 1.0.12 2 10012 2.1.0.12
* 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned)
* 1.2.0beta1-2 2 10200 2.1.2.0beta1-2
* 1.2.0beta3-5 3 10200 3.1.2.0beta3-5
* 1.2.0rc1 3 10200 3.1.2.0rc1
* 1.2.0 3 10200 3.1.2.0
* 1.2.1beta1-4 3 10201 3.1.2.1beta1-4
* 1.2.1rc1-2 3 10201 3.1.2.1rc1-2
* 1.2.1 3 10201 3.1.2.1


1.0.12 ist als Library mit der Version 2.1.0.12 im System
1.2.1 ist als Library mit der Version 3.1.2.1 im System

Letzter ist offensichtlich deine libpng3, dann ist die andere die von Qt

Ciao,
_

brotzi
16-09-2002, 14:37
Es scheint, als ob Du 2 verschiedene libpng's installiert hast. Die eine aus QT (direkt eingebaut) und die andere aus SDLimage/libpng.so.3. Wenn Du QT aus den Quellen erstellt hast ist es also das beste QT mit dynamischer libpng zu rekompilieren.