2012-02-06 7 views
6

Soy nuevo en OpenCV, y tengo un problema con el enlace.Vinculación con OpenCV 2.3.1 en Ubuntu

estoy usando Ubuntu 11.10, OpenCV 2.3.1 se ha instalado de acuerdo con this guía:

estoy construyendo muchas aplicaciones pequeñas con ella, y se ve bien. Normalmente, estoy compilando con pkg-config --libs --cflags opencv.

Ahora, estoy tratando de construir un framework que alguien más escribió, compila sin ningún problema, pero no puedo vincularlo: hay una larga lista de "referencias no resueltas a ..." (miles de ellos). todos los símbolos relacionados con opencv_core no se encuentran.

Intenté recompilar OpenCV sin compatibilidad de encabezado precompilado, no me ayudó. por supuesto. :(

la aplicación test_opencv_core está funcionando muy bien, pero opencv_rand fallidos. Creo que dice que opencv_core es correcto, en general, pero aún así no funciona cuando lo necesito ...

¿Puede usted por favor ? tratar de dar algún indicio que estoy perdido no

gracias de antemano, David

actualización:.. Resuelto

gcc 4.6.1 requieren que las libs y las fuentes aparezcan en la línea de comando antes de pathes a las librerías compartidas. ¿por qué? no lo sé Acabamos de pasar 24 horas para este estúpido error :(

Actualización:. comprensible de la página man ld:

El enlazador buscará un archivo sólo una vez, en el lugar donde es especificado en la línea de comando. Si el archivo define un símbolo que no estaba definido en algún objeto que apareció antes del archivo en la línea de comando, el enlazador incluirá el (los) archivo (s) del archivo. Sin embargo, un símbolo indefinido en un objeto que aparece más adelante en la línea de comandos no hará que el enlazador busque de nuevo el archivo .

Véase el - (opción para una manera de forzar al enlazador para buscar archivos varias veces

Eso es todo

+0

Si el otro marco se suministra como una biblioteca que se vincula a, entonces.. es posible que también deba vincularse con OpenCV. –

+0

Gracias. Este marco se usa como archivos de objetos, no como una biblioteca compartida. Solo intento compilar una aplicación de muestra que usa estos objetos, y el enlace no funciona. – David

+3

Debe publique su solución como una respuesta (en lugar de una edición de pregunta) y acéptela. De esa forma, otros saben que se responde en el futuro. – mevatron

Respuesta

1

gcc 4.6.1 requiere que las bibliotecas y fuentes aparecerán en la.. . línea de comandos antes rutas de acceso a bibliotecas compartidas no sé qué

actualización:. comprensible de la página man ld:.

El vinculador buscará un archivo solo una vez, en la ubicación donde se especifica en la línea de comando.Si el archivo define un símbolo que no estaba definido en algún objeto que apareció antes del archivo en la línea de comandos, el enlazador incluirá los archivos correspondientes del archivo. Sin embargo, un símbolo indefinido en un objeto que aparece más adelante en la línea de comandos no hará que el enlazador busque de nuevo el archivo .

Véase el - (opción para una manera de forzar al enlazador para buscar archivos varias veces

Eso es todo

Cuestiones relacionadas