Links de bibliotecas com dependências incompatíveis

Estou trabalhando em um projeto C ++ que precisa de duas bibliotecas de terceiros libfoo.so e libbar.so). Meu sistema operacional é Linux.

libfoo.so está dinamicamente vinculado a libpng14.so.14 (1.4.8) (EDIT 1)

libbar.so parece estar estaticamente vinculado ama versão não conhecida da libpng libpng 1.2.8 (EDIT 1)

Digo "parece ser" porque:

ldd libbar.so não mostra nada sobre pngnm -D libbar.so | grep png_read_png diz "004f41b0 T png_read_png"less libbar.so | grep png_read_png diz "4577: 004f41b0 738 PADRÃO GLOBAL FUNC 10 png_read_png"

Quando inicio o meu programa, ele aborta:

terminate called after throwing an instance of 'char const*'

Este é o backtrace gdb:

#0  0xb7ffd424 in __kernel_vsyscall ()
#1  0xb5e776a1 in raise () from /lib/libc.so.6
#2  0xb5e78de2 in abort () from /lib/libc.so.6
#3  0xb60a997f in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/gcc/i686-pc-linux-gnu/4.4.5/libstdc++.so.6
#4  0xb60a78a5 in ?? () from /usr/lib/gcc/i686-pc-linux-gnu/4.4.5/libstdc++.so.6
#5  0xb60a78e2 in std::terminate() () from /usr/lib/gcc/i686-pc-linux-gnu/4.4.5/libstdc++.so.6
#6  0xb60a7a21 in __cxa_throw () from /usr/lib/gcc/i686-pc-linux-gnu/4.4.5/libstdc++.so.6
#7  0xb5abf76d in ?? () from /usr/lib/libfreeimage.so.3
#8  0xb6fb9346 in png_error () from lib/libfsdk.so
#9  0xb6fa2a59 in png_create_read_struct_2 () from lib/libfsdk.so
#10 0xb6fa2b7a in png_create_read_struct () from lib/libfsdk.so
#11 0xb5abfa44 in ?? () from /usr/lib/libfoo.so
#12 0xb5aa766b in FreeImage_LoadFromHandle () from /usr/lib/libfreeimage.so.3
#13 0xb5aa59f6 in FreeImage_LoadFromMemory () from /usr/lib/libfreeimage.so.3
#14 0xb68a94a5 in Foo::Image::load (this=0xb4eff560, input=...)

Como você pode ver, a exceção é lançada emFoo :: Imagem :: load que pertencem ao libfoo.so

Desativar a parte do meu código que usa libbar.so e remover o link para ele,Foo :: Imagem :: load não lança nenhuma exceção e funciona be

Então eu acho que pode ser devido a alguma ambiguidade na tabela de símbolos. Como posso corrigi-lo?

EDIT 1

png_access_version_number ()

Com a libbar.so vinculada,png_access_version_number() Retorna10208: versão 1.2.8Sem libbar.so vinculado,png_access_version_number() Retorna10408: versão 1.4.8

questionAnswers(1)

yourAnswerToTheQuestion