Conflitos de símbolos de biblioteca estática e compartilhada?

Eu tenho um projeto trabalhando usando FreeImage e openCV, atualmente estamos usando o suporte jpeg de ambos (estou trabalhando para corrigir isso, mas por enquanto ele precisa ficar). De qualquer forma, o FreeImage compila o libjpeg 7.0 em suas bibliotecas estáticas e a biblioteca highgui do openCV o vincula como uma biblioteca compartilhada (no meu sistema, Ubuntu 9, tenho o libjpeg 6.2 instalado).

Eles são vinculados a uma biblioteca final usada para vincular a vários programas, wrappers java, etc. Tudo isso funciona bem, sem conflitos de símbolos ou qualquer coisa durante o tempo de compilação / link. No entanto, quando vou abrir uma imagem usando a função openCV cvLoadImage, ela morre ao ler o cabeçalho, provavelmente devido às diferenças entre os cabeçalhos nas seções 6.2 e 7.0.

Se eu desvincular o FreeImage (e comentar o código que o requer), as chamadas openCV começarão a funcionar novamente, de modo que os símbolos estáticos libjpeg do FreeImage estão em conflito com os símbolos que seriam carregados da biblioteca compartilhada libjpeg. O que não consigo entender é por que meu compilador não está lançando um erro durante a vinculação por causa dos dois conjuntos de símbolos libjpeg. Além disso, tentei substituir temporariamente o cabeçalho jpeglib.h do meu sistema pela versão 7.0 para ver se o openCV compilado com isso sincronizaria com os símbolos que o freeimage traz para a mesa, sem resultado.

Por fim, coloquei um printf em jpeg_read_header no libjpeg que o freeimage compila e o reconstruí para ver se o openCV está usando a definição freeimage libjpeg. Não foi impresso, então devo assumir que não.

Então eu acho que minhas perguntas são

1) Por que não vincular um libjpeg estático e um libjpeg compartilhado gera erros de vinculação devido a símbolos duplicados?

2) Alguém sabe por que essas duas coisas estão conflitando?

Edit: Compilar o openCV no modo de depuração e, em seguida, no modo normal novamente parece ter soltado algo e o fez funcionar novamente, sem ideia do que está acontecendo.

questionAnswers(3)

yourAnswerToTheQuestion