/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

problema con el linker y la glut

 
      Índice del Foro elrincondelc.com -> Dev-C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Lady_Petra



Registrado: 19 Oct 2011
Mensajes: 7

MensajePublicado: 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: 2558
Ubicación: Valladolid (España)

MensajePublicado: 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

MensajePublicado: 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. Very Happy
_________________
_Laura._
Volver arriba
daltomi



Registrado: 28 Abr 2007
Mensajes: 335
Ubicación: Argentina

MensajePublicado: 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
Dirección AIM
Lady_Petra



Registrado: 19 Oct 2011
Mensajes: 7

MensajePublicado: 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

MensajePublicado: 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
Dirección AIM
Lady_Petra



Registrado: 19 Oct 2011
Mensajes: 7

MensajePublicado: 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

MensajePublicado: 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
Dirección AIM
Lady_Petra



Registrado: 19 Oct 2011
Mensajes: 7

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Dev-C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com