Instalé Ubuntu hace unos días, y utilicé apt-get para instalar build_essentials, opencv, highgui, etc. g ++ es 4.6.1, opencv parece ser 2.1.0 .. No lo hice t build opencv desde la fuente ...Ububtu, opencv y enlace
Tenemos algunos programas que usan la funcionalidad de opencv. Supongamos que los archivos fuente se llaman a.cpp y b.cpp. Recopilo en a.o y b.o y luego los coloco en una biblioteca .so (llámalo libab.so).
Finalmente, hay un archivo con main en él (llámelo z.cpp). Intento crear un ejecutable a partir de él, pero obtengo una tonelada de errores de "referencia indefinida" para cv :: stuff. Mi línea de enlace es como la siguiente:
g++ -fPIC -g z.cpp -L../lib -lab -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
en cuando me siento los errores de referencia (todos los cuales son de CV :: cosas).
La parte interesante es que si enlace directamente con mis archivos .o, se compila muy bien. Así que esto:
g++ -fPIC -g z.cpp a.o b.o -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
funciona.
Todo lo que he leído parece implicar que es probable que sea un problema de ordenamiento de líneas de enlace, pero he intentado todas las permutaciones de pedidos y tengo el mismo problema, así que realmente no creo que sea mi problema, pero podría aún estar equivocado Alguien tiene alguna idea de cómo puedo hacer que esto se construya con mi biblioteca, y por qué actuaría de manera diferente si construyo con el conjunto completo de archivos .o que están en la biblioteca con éxito, pero que no puedo compilar con la biblioteca misma.
Ok, así que esto no es Realmente es una "solución", pero terminé instalando Opencv 2.3.1 desde la fuente - también tuve que instalar ffmpeg (¡específicamente v0.8!) y ahora todo funciona. Por lo tanto, claramente tenía algo que ver con la construcción de OpenCV que obtuve con apt-get. No he intentado esto, pero supongo que podría haber instalado 2.1 desde la fuente y también habría funcionado. Todavía no estoy seguro de por qué compilar con la biblioteca vs.o's sería un problema, pero las cosas están funcionando ahora, así que ... – daroo