¿Conflictos de símbolos de biblioteca estáticos y compartidos?

Tengo un proyecto en funcionamiento que usa FreeImage y openCV, actualmente estamos usando el soporte jpeg de ambos (estoy trabajando para solucionarlo, pero por ahora tiene que quedarse). De todos modos, FreeImage compila libjpeg 7.0 en sus bibliotecas estáticas, y la biblioteca highgui de openCV lo vincula como una biblioteca compartida (en mi sistema, Ubuntu 9, tengo instalado libjpeg 6.2).

Se enlazan a una biblioteca final que se usa para enlazar a varios programas, java wrappers, etc. Todo eso funciona bien, sin conflictos de símbolos ni nada durante el tiempo de compilación / enlace. Sin embargo, cuando voy a abrir una imagen usando la función openCV cvLoadImage, muere al leer el encabezado, probablemente debido a las diferencias entre los encabezados en 6.2 y 7.0.

Si desvincula FreeImage (y comento el código que lo requiere), las llamadas de openCV comienzan a funcionar nuevamente, por lo que claramente los símbolos estáticos de libjpeg de FreeImage están en conflicto con los símbolos que se cargarían desde la biblioteca compartida de libjpeg. Lo que no puedo entender es por qué mi compilador no arroja un error durante la vinculación debido a los dos conjuntos de símbolos libjpeg. Además, he intentado reemplazar el encabezado jpeglib.h de mi sistema con la versión 7.0 temporalmente para ver si openCV compilado con eso se sincronizaría con los símbolos que freeimage trae a la mesa, en vano parece.

Finalmente puse un printf en jpeg_read_header en el libjpeg que compila freeimage, y lo reconstruí para ver si openCV está usando la definición de freeimage libjpeg. No se imprimió, así que debo asumir que no.

Entonces supongo que mis preguntas son

1) ¿Por qué la vinculación de una libjpeg estática y una libjpeg compartida no genera errores de vinculación debido a símbolos duplicados?

2) ¿Alguien sabe por qué estas dos cosas están en conflicto entre sí?

Editar: compilar openCV en modo de depuración y luego en modo normal nuevamente parece haber soltado algo y hacerlo funcionar de nuevo, sin saber qué está pasando.

Respuestas a la pregunta(3)

Su respuesta a la pregunta