| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
Lady_Petra
Registrado: 19 Oct 2011 Mensajes: 7
| Publicado: 25/11/2011 3:32 am | | | Título: problema con el linker y la glut |
| Buenas a todos,
Pretendo pasarme de MSVD a Dev pero por más que intento importar los proyectos que tengo (y que se compilan y ejecutan correctamente en Visual) no hay manera.
El error de linkado que me salta es el siguiente (con practicamente todas las funciones de la glut):
| Cita: | [Linker error] undefined reference to `_imp__glutMainLoop@0' |
Por supuesto, el paquete glut está instalado.
Los comandos que he asociado al linker en las opciones del complilador son las siguientes:
-lglut32 -lglu32 -lopengl32
No sé que más hacer, si alguien pudiera darme algo de luz lo agradecería!
Saludos! _________________ _Laura._ |
|
| Volver arriba | |
 |
cheroky
Registrado: 22 Sep 2005 Mensajes: 2556 Ubicación: Valladolid (España)
| Publicado: 25/11/2011 5:42 pm | | | Título: |
| Hola.
Estos son los argumentos que hay que pesarle al linker: -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32 que deben ser de alguna manera indicados en el proyecto. No manejo dev-c++, así que te tocará investigar, o bien que alguien con experiencia en este IDE te indique los pasos.
·?0ƒ· _________________ La cuestión no es si hay vida inteligente en otros planetas lejanos. La cuestión es si hay vida inteligente aquí. |
|
| Volver arriba | |
 |
Lady_Petra
Registrado: 19 Oct 2011 Mensajes: 7
| Publicado: 28/11/2011 2:11 am | | | Título: comprobado y descartado |
| Gracias Cheroki,
Ante la incapacidad de compilar ningún proyecto en Dev estaba empezando a dudar hasta de la configuración del compilador, así que te agradezco que me saques de dudas.
Los argumentos que me concretas son los mismos que pasaba al linkador y aun así me da el error de linkado que mostraba antes
| Cita: | [Linker error] undefined reference to `_imp____glutInitWithExit@12' . . . |
Este es un ejemplo pero da error con todas las funciones de la glut.
El paquete de la glut parece estar bien instalado. -> glut32.dll copiado en C:\WINDOWS\System32 -> las cabeceras: gl, gltext,glu,glut,glutf90 en C:\Dev-Cpp\include\GL
Estoy probando con el programa ejemplo que da Dev-C++, así que también doy por hecho que los includes son correctos, en concreto:
#include <GL/glut.h> #include <stdlib.h>
Creo que me estoy saltando algún paso básico pero no logró dar con él. He leído de todo en la página oficial, en tutoriales, foros, pero nada. Además me parece que es algo tan básico que la gente pasa de contestar.
En fin, estoy empezando a pensar que tendré que renunciar a utilizar Dev.
Por cierto, te he reconocido como autor de las entradas de FAQ. Me ha sido útil muchas veces, así que gracias por eso.  _________________ _Laura._ |
|
| Volver arriba | |
 |
|
daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 28/11/2011 12:30 pm | | | Título: |
| Buenas.
Problema parecido y solución: link externo
En resumen:
1. Además de los parám. del enlazador puede que debas usar la opción "Add Library or Object"(creo que se refiere a un botón de la misma ventana) y agregar las librerías correspondientes(manualmente)
2. Incompatibilidad de los archivos de librerías con el enlazador, es decir, al ser un IDE soporta varios compiladores y enlazadores, algunos necesitan archivos con extensión .lib mientras otros con extensión .a, una mala config. del IDE puede ser el problema.
Publica aquí el archivo Makefile.win para chequearlo(utiliza las etiquetas code del editor del foro por prolijidad), éste archivo se encuentra en el directorio de tú proyecto.
Saludos. |
|
| Volver arriba | |
 |
Lady_Petra
Registrado: 19 Oct 2011 Mensajes: 7
| Publicado: 28/11/2011 4:12 pm | | | Título: |
| Buenas Daltoni,
Antes de nada, muchas gracias por tu respuesta.
En la búsqueda de alguna respuesta había dado con el post del foro al que me rediriges. Sin embargo, tampoco conseguí solucionar el problema con él. En aquel caso el chico olvidó incluir la librería opengl. De todas formas, sí comentan que el problema puede estar en incluir o no librerías .lib y .a He probado ambas y nada.
Lo que no había probado es a añadir las librerías a través del botón "Add library or object". Al añadir de este modo la biblioteca libglut.a los errores se han reducido de 22 a 4.
Este es el makefile:
| Código: | # Project: Prueba1 # Makefile created by Dev-C++ 4.9.9.2
CPP = g++.exe CC = gcc.exe WINDRES = windres.exe RES = OBJ = main.o $(RES) LINKOBJ = main.o $(RES) LIBS = -L"C:/Dev-Cpp/lib" -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32 -lm -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32 ../../../lib/libglut.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 = prueba1.dll CXXFLAGS = $(CXXINCS) CFLAGS = $(INCS) -DGLUT_STATIC RM = rm -f
.PHONY: all all-before all-after clean clean-custom
all: all-before prueba1.dll all-after
clean: clean-custom ${RM} $(OBJ) $(BIN)
DLLWRAP=dllwrap.exe DEFFILE=libprueba1.def STATICLIB=libprueba1.a
$(BIN): $(LINKOBJ) $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
main.o: main.cpp $(CPP) -c main.cpp -o main.o $(CXXFLAGS)
|
Este es el error del compilador:
| Código: | Compilador: Default compiler Building Makefile: "C:\Dev-Cpp\proyectos laura\pruebasDEVglut\prueba1\Makefile.win" Ejecutando make... make.exe -f "C:\Dev-Cpp\proyectos laura\pruebasDEVglut\prueba1\Makefile.win" all dllwrap.exe --output-def libprueba1.def --driver-name c++ --implib libprueba1.a main.o -L"C:/Dev-Cpp/lib" -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32 -lm -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32 ../../../lib/libglut.a -o prueba1.dll
main.o(.text+0x1c):main.cpp: undefined reference to `_imp____glutInitWithExit@12' main.o(.text+0x3f):main.cpp: undefined reference to `_imp____glutCreateWindowWithExit@8' main.o(.text+0x61):main.cpp: undefined reference to `_imp____glutCreateMenuWithExit@8' collect2: ld returned 1 exit status
dllwrap.exe: no export definition file provided. Creating one, but that may not be what you want dllwrap.exe: c++ exited with status 1
make.exe: *** [prueba1.dll] Error 1
Ejecución Terminada
|
Gracias! _________________ _Laura._ |
|
| Volver arriba | |
 |
daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 28/11/2011 4:49 pm | | | Título: |
| Algunas documentaciones incluyen, no solo una, sino varías librerías como éstas y en éste orden.
| Código: | libopengl32.a libglu32.a libglut32.a
|
Agrégalas del mismo modo que con libglut.a, pero no se si los nombres llevan o no el 32.
Saludos. |
|
| Volver arriba | |
 |
|
Lady_Petra
Registrado: 19 Oct 2011 Mensajes: 7
| Publicado: 29/11/2011 12:23 am | | | Título: |
| Nada, no ha habido suerte. Mismos errores. _________________ _Laura._ |
|
| Volver arriba | |
 |
daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 29/11/2011 5:32 am | | | Título: |
| He instalado el IDE y creado un proyecto de tipo "Win32 Console", con el código de ejemplo propuesto aquí, aunque no instalé GLUT "a mano" sino que utilicé los llamados DevPacks
Tuve problemas, pero usando la opción del menú "Reconstruir todo" (o algo asi) pudo compilar finalmente. Lo que sucedía es que si me olvidaba de algún parámetro del enlazador, luego de colocarlo, no actualizaba realmente el Makefile.
Otro tema, según tú Makefile estás creando una DLL. He creado un proyecto DLL y el Makefile generado no coincide con algunas cosas. Por ejemplo:
| Código: |
-----------Mi Makefile
CXXFLAGS = $(CXXINCS) -DBUILDING_DLL=1 CFLAGS = $(INCS) -DBUILDING_DLL=1
dllmain.o: dllmain.cpp
-----------Tú Makefile:
CXXFLAGS = $(CXXINCS) CFLAGS = $(INCS) -DGLUT_STATIC
main.o: main.cpp
|
Creo que éste es otro problema ajeno, intenta con "Reconstruir todo" a ver si compila de una vez. |
|
| Volver arriba | |
 |
Lady_Petra
Registrado: 19 Oct 2011 Mensajes: 7
| Publicado: 04/12/2011 10:28 am | | | Título: |
| Nada, no hay manera. Me he vuelto loca con este tema peor desisto.
Intente con el ejemplo que me enviaste, ya lo había hecho antes, pero tuve la misma suerte, no logré que funcionase.
He seguido mirando por ahí pero no logro encontrar la solución, me parece que renuncio al Dev-c++
Gracias de todas formas _________________ _Laura._ |
|
| Volver arriba | |
 |
|
|