| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
lad3
Registrado: 25 Sep 2005 Mensajes: 2
| Publicado: 26/09/2005 1:58 pm | | | Título: Error de Linkeo ! |
| Muchachada, este es el primer post de un nuevo incursionador en el mundillo de C... y, para no ser menos, comienzo con una duda y una disculpa:
La disculpa: no tengo teclado en espaniol, je.
La duda: Uso el DEV-C++ 4.9.9.2 c/mingw y WinXP, escribo en ANSI C. Me arme un libreria estatica compilando un archivo de cabeceras (.h) y un .c que define la implementacion de las funciones que aparecen en la cabecera y genere el .a correspondiente. Luego cree una pequenia aplicacion que use la libreria... pero al compilar me dice:
[Linker error] undefined reference to `or'
Ya he asignado la libreria que he creado yo desde la vinieta adecuada en Opciones de Proyecto; use #include "TDAparser.h" (tal es el nombre del .h, que se encuentra en el mismo directorio que el .c que lo utiliza) y no existe ninguna funcion o variable de algun tipo bajo la denominacion 'or' que no este definida. En resumen: no se de que me esta hablando el linker. Todo parece estar en su lugar...pero no logro compilar.
Si pueden ayudarme, tendran mi gratitud. Si necesitan ver el codigo, solo pidanlo.
Muchas gracias de antemano.- |
|
| Volver arriba | |
 |
cheroky
Registrado: 22 Sep 2005 Mensajes: 1372 Ubicación: En ecx esperando un call
| Publicado: 26/09/2005 3:53 pm | | | Título: |
| | Como se llama la libreria? en que directorio esta? mas que el codigo seri a interesante que postearas el makefile que te ha generado dev-c++ |
|
| Volver arriba | |
 |
lad3
Registrado: 25 Sep 2005 Mensajes: 2
| Publicado: 26/09/2005 4:23 pm | | | Título: |
| la libreria se llama libTDAparser.a y he probado poniendola en el sub-directorio /lib del DEV-C++ o en la misma carpeta que el .c (ninguna parece funcionar, tira el mismo error).
El makefile dice lo siguiente:
# Project: usaTDAparser # Makefile created by Dev-C++ 4.9.9.2
CPP = g++.exe CC = gcc.exe WINDRES = windres.exe RES = OBJ = usaTDAparser.o $(RES) LINKOBJ = usaTDAparser.o $(RES) LIBS = -L"C:/Dev-Cpp/lib" libTDAparser.a INCS = -I"C:/Dev-Cpp/include" CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" BIN = usaTDAparser.exe CXXFLAGS = $(CXXINCS) -ansi CFLAGS = $(INCS) -ansi RM = rm -f
.PHONY: all all-before all-after clean clean-custom
all: all-before usaTDAparser.exe all-after
clean: clean-custom ${RM} $(OBJ) $(BIN)
$(BIN): $(OBJ) $(CC) $(LINKOBJ) -o "usaTDAparser.exe" $(LIBS)
usaTDAparser.o: usaTDAparser.c $(CC) -c usaTDAparser.c -o usaTDAparser.o $(CFLAGS)
Si es necesario algo mas, avisar. Gracias ! |
|
| Volver arriba | |
 |
|
machagai
Registrado: 29 Sep 2007 Mensajes: 1
| Publicado: 29/09/2007 4:07 pm | | | Título: Tengo el mismo problema |
| Holaaa tengo el mismo problema, ayuda por favot.
saludos |
|
| Volver arriba | |
 |
cheroky
Registrado: 22 Sep 2005 Mensajes: 1372 Ubicación: En ecx esperando un call
| Publicado: 30/09/2007 6:27 am | | | Título: |
| El makefile lo veo correcto, lo que me escama es que tengas un identificador 'or' (tan cortito) de donde deriva el error, ¿no tendras alguna variable extern? o bien el escope de alguna ¿variable?.
Prueba hacer lo siguiente, sin abrir un proyecto, creas un nuevo fichero con extension *.c (por el makefile veo que es *.c no *.cpp) ahi haces una prueba de tu/s funcion/es y en Herramientas/opciones del copilador , en el edit "Añadir estos comandos a la linea de comnados del linker" tipeas: -lTDAparser, no olvides marcar la casilla para que acepte los keywords.
Ya nos comentaras que ocurre.
S2. _________________ - Explícito es mejor que implícito. - Simple es mejor que complejo. - Complejo es mejor que complicado. - Plano es mejor que anidado. - Ralo es mejor que denso. |
|
| Volver arriba | |
 |
|
|