error al compilar

Iniciado por boticheliss, 13 Enero 2011, 16:12 PM

0 Miembros y 1 Visitante están viendo este tema.

boticheliss

Estoy utilizando programa codeblocks para el manejo de la libreria de opencv y el código siguiente me da el error Undefined reference to 'CvInitSystem' entre otros. Tengo todas las librerias bien linkadas y no se a que se debe este error. ¿Podeis decirme a que es debido? La función incializarImgRGB aun no esta implementada.Muchas gracias. El código es el siguiente:

#include <stdio.h>

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>


#include "comun.h"


#define fGRIS "¡Hola, OpenCV en gris!"
#define fRGB "¡Hola, OpenCV en color!"

#define L MAXPIXEL
#define AMPLE (int)L
#define ALT (int)L



// Declaraciones de prototipos locales
int incializarImgGris( IplImage *imgOrg );
int incializarImgRGB( IplImage *imgOrg );



//
// Programa principal
//
int main(int argc, char* argv[])
{
IplImage *imgOrgGris;

cvInitSystem( argc, argv );
printf("OpenCV version: %s\n", CV_VERSION);
//CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION, CV_VERSION


printf("Creando una imagen y mostrándola en pantalla [Cualquier tecla - Salir].\n");

imgOrgGris = cvCreateImage(cvSize(AMPLE, ALT),IPL_DEPTH_8U, 1);
if (!imgOrgGris)
{
fprintf(stderr, "Problemas al crear la imagen en grises\n");
return( 1 );
}

fprintf(stderr, "Se ha creado una imagen de %dx%d, de %d planos.\n",
imgOrgGris->width, imgOrgGris->height, imgOrgGris->nChannels );
incializarImgGris( imgOrgGris );
cvNamedWindow( fGRIS, CV_WINDOW_AUTOSIZE );
cvShowImage( fGRIS, imgOrgGris );
cvMoveWindow( fGRIS, 0, 0 );



// RGB




cvWaitKey(0); // Espera una tecla los milisegundos que haga falta


cvDestroyAllWindows( );

cvReleaseImage( &imgOrgGris );

return 0;
}








//
// Inicializa una imagen de un sólo plano de color (imagen de grises)
// con un gradiente de valores de gris
//
// Entrada: imgOrg - la imagen de partida.
//
// Salida: imgOrg - la imagen resultados que se devuelve modificando la original.
//
int incializarImgGris( IplImage *imgOrg )
{
int x, // indice de las columnas
y; // indice de las filas
CvScalar colorDst;

if ( imgOrg->nChannels != 1)
return( 1 );
else
{

for ( x = 0; x < imgOrg->width; x++ )
for ( y = 0; y < imgOrg->height; y++ )
{
colorDst.val[0] = x;

cvSet2D(imgOrg, y, x, colorDst);
} // Fin de " for ( y = 0; y < imgOrg->height; y++ )"
}// Fin de if-else ( imgOrg->nChannels != 1)

} // Fin de "int incializarImgGris( IplImage *imgOrg )"


int incializarImgRGB( IplImage *imgOrg )
{

} // Fin de "int incializarImgRGB( IplImage *imgOrg )"*/

RyogiShiki

Hola, para sabeer bn como hacer las cosas seria bueno que nos comunicaras sobre que SO estás trabajando.

En todo caso si estás en Windows lo más seguro es que te falte agregar alguna flag en la ventana Linker Options, te dejo un link para que verifiques si toda tu configuración está realizada de manera correcta:
http://opencv.willowgarage.com/wiki/CodeBlocks

Espero sea de Ayuda

Saludos


boticheliss

Hola perdona si que trabajo con Windows.

He desintalado version 2.2 que tenia de openCV y he instalado las versiones 2.0 y 1.1 de la siguiente página:

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/

He seguido manual del link que me has pasado pero hay algunos pasos que no he podido realizar al no encontrar la ruta ni las librerias que me mencionas.

Al añadir en el debug dentro de search directories-->linker no encuentro la ruta C:\OpenCV2.0_VS2008\lib\Debug

En el paso Add the libraries(OpenCV2.0) directive. tampoco encuentro esas librerias que menciona.
Ya no me aparece el error anterio y si que se compila el programa y se genera el ejecutable pero cuando lo intento ejecutar me da el siguiente error:

Error al iniciar la aplicacion porque no se encontro cxcore.dll. la reinstalacion de la aplicacion puede solucionar el problema.

No he encontrado la libreria cxcore110.dll pero la liberia cxcore.dll si que esta.

¿A que se debe este error?

Muchas gracias. Un saludo

RyogiShiki

Ese error se da porque no tienes bn las variables de entorno, osea que las rutas en el path del sistema están mal o no están, para solucionar eso haz lo siguiente:

ir a Control PAnel -> System -> Advanced -> VAriables del Sistema -> Editar y añadir el directorio donde estela carpeta bin de opencv por ejemplo añadirias esto:

c:\Program Files\OpenCV\bin;.

Con la terminación en Punto Y coma, reinicias el sistema, Compilas y nos cuentas como te fue.

Saludos


boticheliss

Hola buenas.

He puesto el en el path la variable del sistemas tal como me has comentado pero continua apareciendome el mismo error.

La libreria esa la puedo encontrar en algun lado? La habria de poner en linker dentro de codeblocks o registrarla en alguna ruta en Windows.

Muchas gracias.


RyogiShiki

#5
Bueno, la librería que estás buscando debería encontrarse dentro de la ruta RELATIVA \OpenCV\Bin, para solucionar el problema puedes hacer doscosas:

1. Copiar la librería de dicha carpeta y ponerla al lado del ejecutable compilado

2. Verifica que en el PATH de Windows la ruta sea correcta, si el error persiste de seguro tienes algo mal en las variables de Entorno, verifica que todas las rutas sean correctas y dirijan a directorios reales, que todas las rutas terminen en punto y coma (;)

Espero se pueda solucionar

Saludos


boticheliss

Muchas gracias al copiar las librerias en el directorio donde se genera el ejecutable se soluciona el problema.

Gracias por todo.

Un saludo

RyogiShiki

bien de nada, me alegra que se haya resuelto!