Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Devc++ Y Libs Del Vc++

Iniciado por AgeR, 29 de Noviembre de 2003, 10:00:48 PM

« anterior - próximo »

AgeR

 Estoy planteándome en dejar el Visual C++ y meterme con el DevC++.
Este fin de semana, al no tener el VC++ instalado aquí, quería compilar un ejemplito que hice a ver si rulaba con el DevC.
El ejemplo, carga una librería que hice con el VC++. Pero al intentar compilar con el devc me da errores de linkado : undefined reference to 'clase o funcion'

Sin embargo, tengo la librería puesta donde toca para linkar. He probado metiendole la librería directamente en las opciones del proyecto y también mediante un #pragma, pero nada.

El devc no soporta libs creadas con el vc? Si es así, por que deja seleccionar librerías con formato .lib además de .a?

En fin, que lio XD

Zaelsius

 Hombre, que tanto las las librerias de Dev-C++ como las de VC++ tengan la misma extensión no significa que sean compatibles. Aunque ya lo sabrás, lo digo : .lib es el convenio para compiladores windows, y .a para compiladores unix/linux. Aun asi, si les cambias la extension la mayoria de los compiladores las seguirán enlazando.

Total, que te toca recompilar la libreria con el compilador que luego vayas a usar. Por algo preguntaba por aquí Boubou hace poco por librerias de directx8 para Dev-C++.  :(  

AgeR

 Lo sé, lo sé.
El caso es que como he visto que todas las librerías del devc tienen la extensión .a he supuesto que de algún modo el compilador podía usar las .lib haciendo algún tipo de conversión o algo.
Vamos, que parece que he supuesto algo que no era.
Y no habrá algún programita que te transforme de .lib a .a? (Me dá que acabo de decir una animalada XD)
Es que estoy un poco aburrido y me apetece hacer algo XDDDD

En fin  :(  

AgeR

 Pues vuelvo a la carga con el tema del devc++.

Me he topado con un error algo extraño (o eso me parece a mí) al intentar compilar código que funciona perfectamente en vc.
El principal problema (a parte de uno de las dx9) es el siguiente :

147 C:\ANDOR PROYECTOS\NaraEngine\Graficos.cpp invalid conversion from `void*' to `HINSTANCE__*'

Aquí tenemos la instancia para la clase de ventana, a parte del resto de miembros y tal
wc.hInstance      = GetModuleHandle(NULL);

Ahora intentamos crear la ventana.
hWnd = CreateWindow(m_szClase, m_szTitulo,
                      WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, m_iAncho, m_iAlto,
                       GetDesktopWindow(), NULL, wc.hInstance, NULL);


El error lo dá en el CreateWindow. Parece que espera otra cosa en vez del wc.hInstance.
Alguien que haya usado devc o que sepa qué puede ser, podría echarme una mano?

Gracias!

ethernet

 c++ no tienen conversion implicita de tipos, usa un cast. Puedes usar el cast de c (HINSTACE) o usar uno de los de c++, aunque en este caso no se si sera static_cast o reinterpert_cast (o apuesto mas por el segundo)

saludos

Zaelsius

Cita de: "ethernet"reinterpert_cast
Has cometio un mispelling jeje, es "reinterpret_cast<>". No sea que lo quiera probar alguien y se de cabezazos contra la pared  (nooo) .

PD: Ayer estuve 1 hora comiendome el tarro con OpenGL, intentando dibujar una rejilla.. hasta que me dí cuenta que estaba poniendo GL_LINE en vez de GL_LINES..  (nooo)  

MChiz

 Pues utiliza los checks de GL : )

AgeR

 Pues muchísimas gracias, ya está solucionado!  (ole)  

ethernet

Cita de: "ZaelSiuS"
Cita de: "ethernet"reinterpert_cast
Has cometio un mispelling jeje, es "reinterpret_cast<>". No sea que lo quiera probar alguien y se de cabezazos contra la pared  (nooo) .
nota mental: no todo el mundo usa visual assist y su estupendo, fantastico y maravilloso autocomplete  

lordloki

 
Cita de: "AgeR"El caso es que como he visto que todas las librerías del devc tienen la extensión .a he supuesto que de algún modo el compilador podía usar las .lib haciendo algún tipo de conversión o algo.
Vamos, que parece que he supuesto algo que no era.
Y no habrá algún programita que te transforme de .lib a .a? (Me dá que acabo de decir una animalada XD)
Es que estoy un poco aburrido y me apetece hacer algo XDDDD

Prueba a renombrar la librería ".lib" a ".a". Con la librería OpenAL funciona y enlaza correctamente. Aunque no te aseguro que funcione para todas las librerías.
Saludos

AgeR

Cita de: "lordloki"Prueba a renombrar la librería ".lib" a ".a". Con la librería OpenAL funciona y enlaza correctamente. Aunque no te aseguro que funcione para todas las librerías.
Saludos
Probé a hacerlo y no funcionó.
De todas formas he recompilado mi dll en el devc directamente y ya la he podido usar sin problemas (no está mal teniendo en cuenta que usa STL, DX9, singletons y alguna cosa "rara" más).
Tan solo me han hecho falta unos ajustes en el dibujado de sprites (la clase D3DXSprite ha cambiado en la summer release), y los nombres de las librerías, a parte del problema con el HINSTANCE.

Además la dll que genera el devc me ocupa unos 200k, frente a los 492k de la de VC.
Por contra, la lib generada con devc ocupa 99k y la del VC unos 41k.

Bueno, ya de paso, por si alguien se decide a utilizar las DX9 en este entorno, hay que incluir la dll d3dx9d.dll (mega y medio) en el lugar donde tengas tu aplicación.

Venga, de nuevo gracias a todos!

Mars Attacks

 Cuéntalo todo: me funciona hasta a mí  (uoh)  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.