Foros del Web » Programación para mayores de 30 ;) » Programación General »

Linker Error: Undefined symbol...

Estas en el tema de Linker Error: Undefined symbol... en el foro de Programación General en Foros del Web. Camaradas, necesito de vuestra ayuda. Hace tiempo que no programo en C, y no logro entender a que se debe este error: Linker Error: Undefined ...
  #1 (permalink)  
Antiguo 15/04/2006, 04:16
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Pregunta Linker Error: Undefined symbol...

Camaradas, necesito de vuestra ayuda.
Hace tiempo que no programo en C, y no logro entender a que se debe este error: Linker Error: Undefined symbol _closegraph in module...
Lo que intento hacer es, dibujar un circulo y saber si la coordenada dada se encuentra dentro de el o no. Por cierto, si alguien tiene un ejemplo parecido, me ahorraria bastante tiempo.
De antemano, gracias por vuestras respuestas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #2 (permalink)  
Antiguo 15/04/2006, 06:02
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
El problema es que el enlazador no encuentra en ningun lado la funcion closegraph. ¿Que compilador estas usando? ¿Estas tratando de usar funciones de Borland?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 15/04/2006, 06:22
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Pues yo estoy usando BC. Y precisamente, en BC me da ese error, porque en TC, todo bien, solo que me dice que no encuentra el driver.
Pon el codigo que tengo hasta el momento:
Código:
#include <conio.h>
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#define X0 40
#define Y0 12
#define R 8

void main()
{
	int x,y;
	int gdriver = DETECT, gmode, errorcode;
	printf("\nВведеите значение X [0..40]"); scanf("%d",&x);
	printf("\nВведеите значение Y [0..10]"); scanf("%d",&y);

	initgraph(&gdriver, &gmode, "d:\dev\tc\bgi");
	errorcode = graphresult();
	if (errorcode != grOk)
	{
		printf("Graphics error: %s\n", grapherrormsg(errorcode));
		printf("Press any key to halt:");
		getch();
		exit(1);
	}
	setcolor(RED);
	circle(X0,Y0,R);	
	getch();
	closegraph();
}
O algo estoy haciendo mal?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 15/04/2006, 06:34
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Ese codigo solo te va a servir con TC.

http://www.conclase.net/c/Borland/fu...fun=closegraph

http://www.conclase.net/c/Borland/li...p?lib=graphics

"Contiene los prototipos de las funciones para preparar y manipular la parte gráfica en el entorno de MS-DOS®."

http://electrosofts.com/cgraphics/index.html

BC genera ejecutables de 32 bits para Windows.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 15/04/2006, 06:54
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Bueno, en TC ya funciona. En realidad, esto es un simple programa, no importa que sea en DOS o Windows.
Ahora, solo falta codigo que halle el punto dentro del circulo. Alguna idea?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 15/04/2006, 09:44
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Hola flaviovich: lo que necesitas es algo com esto:

Código:
 int estaDentro(int x, int y){
    int estaDentro = 0;
        if(sqrt(pow(x-X0,2)+pow(y-Y0,2))<=R)
                 estaDentro = 1;
        return estaDentro;
}
te retorna 0, cuando el punto esta fuera del circulo, y te retorna 1, cuando esta dentro del circulo.
Para que funcione, tenes queimportar la biblioteca math.h.

Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #7 (permalink)  
Antiguo 15/04/2006, 10:01
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Hola TolaWare!
Si, asi lo estuve haciendo. Incluso sin la biblioteca math.h.
Código:
#include <conio.h>
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#define X0 320
#define Y0 240
#define R 100

void main()
{
	int X,Y;
	int gdriver = DETECT, gmode, errorcode;
	unsigned int t;
	printf("\nEnter value of X [1..640]: "); scanf("%d",&X);
	printf("\nEnter value of Y [1..480]: "); scanf("%d",&Y);

	initgraph(&gdriver, &gmode, "d:\\dev\\tc\\bgi");
	errorcode = graphresult();
	if (errorcode != grOk)
	{
		printf("Graphics error: %s\n", grapherrormsg(errorcode));
		printf("Press any key to halt:");
		getch();
		exit(1);
	}
	putpixel(X,Y,WHITE);
	setcolor(RED);
	circle(X0,Y0,R);
	t = (X-X0)*(X-X0)+(Y-Y0)*(Y-Y0);
	if (t > R*R)
	{
		outtextxy(300,400,"n=0");
	}
	getch();
	closegraph();
}
Pero hay algo que no estoy haciendo bien.
Bueno, aquí no acaba todo. Ademas de eso, debo encontrar en que cuadrante se halla el punto. ¿No hay algun site con codigo C?
Por cierto, gracias por responder.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 15/04/2006, 10:51
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
algo asi es lo que buscas:
Código:
 int cuadrante(int x,int y){
    if(x>X0){
        if(y>=Y0)
            return 1;
        else
            return 4;
    }
    else {
        if(y>YO)
            return 2;
        else
            return 3;
    }
}
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #9 (permalink)  
Antiguo 15/04/2006, 10:54
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
puedes buscar en la webdelprogramador

http://www.lawebdelprogramador.com
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #10 (permalink)  
Antiguo 17/04/2006, 08:22
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Gracias TolaWare!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #11 (permalink)  
Antiguo 27/09/2007, 09:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Linker Error: Undefined symbol...

Como va, miren yo segui el ejemplo q dice arriba y no me acepta ningun parametro de "graphics.h", como ser initgraph, closegraph, etc. la libreria en la carpeta INCLUDE la tengo cargada, al igual q en la carpeta LIB, pero igualemente presenta error con todas las funciones. Estoy usando el borland. Si alguien tiene alguna solucion se lo agradeceria.

Adios.
  #12 (permalink)  
Antiguo 19/10/2007, 17:07
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Re: Linker Error: Undefined symbol...

Espero que no sea demasiado tarde, este problema es común y no se debe a errores en el código si no a una opción que está desabilitada en el compilador.

Para solucionarlo has lo siguiente:
Ve a Options -> Linker -> Libraries y dentro de este marca la casilla Graphics library

Ahora compila nuevamente el programa y ya no tendrás errores.
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #13 (permalink)  
Antiguo 20/10/2007, 02:33
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Re: Linker Error: Undefined symbol...

Creo que la gente de verdad no sabe lo que es no revivir temas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:00.