Foros - Stratos

Proyectos => IndieLib => Mensaje iniciado por: en 21 de Febrero de 2005, 07:34:26 PM

Título: Problemas Para Compilar Los Ejemplos
Publicado por: en 21 de Febrero de 2005, 07:34:26 PM
 A ver, preguntas del millón...

¿Se pueden compilar los ejemplos con Dev C++? ¿Cómo? ¿O hace falta usar VC++? ¿Hace falta el SDK de DirectX 9? Por la información que hay en la web deduje que hacía falta si quería compilar Looverlib, pero para usarlas en  juegos no lo tengo claro?

Vamos, resumiendo, que tengo Dev C++ y al compilar los ejemplos tengo tropocientos errores de compilación (he enlazado la libreria .lib desde las opciones del proyecto, pero no sé si hace falta hacer algo más), y un buen montón de "file not found".

¿Alguien me echa un cable?
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Sacrifai en 21 de Febrero de 2005, 07:40:18 PM
 ¿Has incluido la carpeta de los headers en las opciones?
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Loover en 21 de Febrero de 2005, 08:04:39 PM
 La SDK de direct3d 9 no hace falta, tan solo si quieres compilar la librería en sí.

Nunca he compilado ningún ejemplo con devc++. En principio deberían funcionar añadiendo la .lib al proyecto así como la carpeta "LibHeaders" y hacer un include "LibHeaders/Loover.h"

Lo que ya no sé es si las .dll compiladas con vc++6 funcionan para devc++. ¿Alguien sabe esto?

Los ejemplos vienen acompañados de momento con un archivo de proyecto vc++6, listo para ser compilado. A ver si puedo echarle un ojo al devc++
Título: Problemas Para Compilar Los Ejemplos
Publicado por: en 21 de Febrero de 2005, 08:11:03 PM
 Sí. Pero me sigue sin encontrar muchos ficheros. Creo que es porque en los includes de los headers ponen rutas en plan "LibHeaders/2d_h/LOV_ImageManager.h" en lugar de "../2d_h/LOV_ImageManager.h". De todos modos, aun arreglando esto, me pide headers que creo que son del SDK de DirectX 9... Por eso pregunto si hace falta el SDK de DirectX 9 y si sirve Dev C++ (y cómo demonios lo hago funcionar, claro :P )
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Haddd en 21 de Febrero de 2005, 08:17:52 PM
 Necesitas el SDK de DX9, a no ser que Loover lo haya pensado de forma que no sea necesario, pero vamos, eso sería hacer un Wrapper de todo DX.
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Loover en 21 de Febrero de 2005, 08:22:58 PM
 Vaya, pues va a ser que si es necesaria la SDK, he usado LPDIRECT3D9 y IDirect3DDevice9 en Render.h para la función de inicialización a partir de los dos punteros de direct3d.

¿Se podría evitar esto de alguna manera?

Supongo que cuando separe el render en un .dll ya no hará falta tener la SDK, ¿no?

En cuanto a lo de si sirve devc++, en principio sí, pero no he preparado los ejemplos para ello. Puede que las rutas cambien o alguna historia así. Es algo que tengo que mirar, lo siento.

De momento, a no ser que veas que puedes resolver tu mismo lo de que funcione en devc++ (que igual son 4 tonterías) te recomiendo usar visual c++6
Título: Problemas Para Compilar Los Ejemplos
Publicado por: fiero en 21 de Febrero de 2005, 08:56:30 PM
 Funcionará con meter d3dx9.lib, dxguid.lib y los .h de dx9, eso es alrededor de 1 MB en zip. Lo que me lleva a la pregunta de ¿es posible distribuir esos ficheros junto con una libreria?. Conociendo a Micro$oft seguramente es del todo ilegal y tendrás que poner en la web: "Descargate el SDK de 120 MB si quieres que te funcione"...

saludos

EDITO: Si metes la parte de render de DX9 en una dll ya no va a pedir nada porque el código estará en la dll y no en los lib del sdk
Título: Problemas Para Compilar Los Ejemplos
Publicado por: StraT en 21 de Febrero de 2005, 09:23:39 PM
 Tenia entendido que dev c++ usaba .a y no .lib...

Quizas sea eso.

Saludos
Título: Problemas Para Compilar Los Ejemplos
Publicado por: raistlin en 21 de Febrero de 2005, 10:07:21 PM
 no se pueden incluir ficheros del SDK de microsoft en ningun producto por separado
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Loover en 21 de Febrero de 2005, 11:04:31 PM
 Pues vaya faena. Intentaré sacar el sistema de plugin-render en la siguiente versión en cuanto pueda, para evitar que la gente que use LooverLib tenga que bajarse toda la SDK. Y para cada ejemplo pondré también un fichero de proyecto de devc++

Así que de momento, para la persona que hizo la pregunta inicial:

- Sí, se necesita la SDK de d3d9
- Con Devc++ no debería haber problema, pero no se ha probado. Si puedes, utiliza Visual c++6

En la próxima versión:

- El render de D3d9 estará en una dll, ya no hará falta la SDK
- Incluiré un fichero de proyecto devc++ en cada ejemplo

Disculpen las molestias!
Título: Problemas Para Compilar Los Ejemplos
Publicado por: TheAzazel en 28 de Febrero de 2005, 11:45:50 PM
 Loover, si consigues que tu libreria compilada con visual C se puede utilizar desde DevC++... dime como lo has hecho pq me stoy volviendo loco jeje. Y la opcion de compilar toda la libreria para DevC++ no me hace nada...pq entonces ya empieza el lio...varias DLL para win32 una para vc, otra para gcc, otra para x....

ya me contaras como lo solucionaste
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Loover en 01 de Marzo de 2005, 02:46:04 PM
 Pues aún no me he puesto con eso, pero es lo que sospechaba. Que son otro tipo de dll que no van a funcionar entre compiladores, ¿verdad?

Título: Problemas Para Compilar Los Ejemplos
Publicado por: TheAzazel en 01 de Marzo de 2005, 02:50:33 PM
 Pues si, basicamente se reduce a eso.... una DLL para utilizar VC y otra para mingw.
Hasta donde he llegado se podria hacer un apano pero es harto tedioso y  si no funciona...tiempo perdido. Nada, de momento dejare la DLL para utilizar win32 con los visualstudio's y una .so para Linux con gnu c y listo. Tu como das el codigo fuente..no deberia preocuparte por estas cosas...q cada uno recompile todo para su compi :), solo tendras q asegurarte q compila.
un saludo
Título: Problemas Para Compilar Los Ejemplos
Publicado por: Loover en 01 de Marzo de 2005, 03:24:08 PM
 Lo que si me molesta mucho es que el usuario necesite la SDK enterita de Direct3d 9. ¿Aparte de la solución de meter los métodos en una dll (a modo de wrapper de las funciones de D3d que necesite) que funcione como renderer y cargarla como un plugin  se os ocurren otras cosas?

Título: Problemas Para Compilar Los Ejemplos
Publicado por: KACHORRO en 23 de Octubre de 2005, 03:05:54 PM
 Yo tengo el DirectX 9 SDK

He incluido en mi programa:

Citar
#include ".\\libheaders\\loover.h"

y he añadido la lib al proyecto

ahora bien, el proceso de compilado lo hace correctamente, pero el de linkado me da los siguientes errores:

Citar
narcolib.obj : error LNK2005: "bool __cdecl ZisLess(class LOV_Entity2d *,class LOV_Entity2d *)" (?ZisLess@@YA_NPAVLOV_Entity2d@@0@Z) already defined in isometric.obj

surface.obj : error LNK2005: "bool __cdecl ZisLess(class LOV_Entity2d *,class LOV_Entity2d *)" (?ZisLess@@YA_NPAVLOV_Entity2d@@0@Z) already defined in isometric.obj

narcolib.obj : warning LNK4006: "bool __cdecl ZisLess(class LOV_Entity2d *,class LOV_Entity2d *)" (?ZisLess@@YA_NPAVLOV_Entity2d@@0@Z) already defined in isometric.obj; second definition ignored

surface.obj : warning LNK4006: "bool __cdecl ZisLess(class LOV_Entity2d *,class LOV_Entity2d *)" (?ZisLess@@YA_NPAVLOV_Entity2d@@0@Z) already defined in isometric.obj; second definition ignored
   Creating library Release/surface.lib and object Release/surface.exp

Release/surface.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

surface.exe - 3 error(s), 2 warning(s)

¿Alguna sugerencia?
Título: Problemas Para Compilar Los Ejemplos
Publicado por: en 23 de Octubre de 2005, 05:55:21 PM
 Al principio de loover.h debería haber un #ifndef loover y un #define loover o algo parecido y al final un #endif.

No tengo ni idea de si es así porque habría que mirar y probar pero quizás te puede dar una pista, lo que parece claro es que el error sale porque vuelves a definir las mismas funciones en narcolib-obj, surface.obj, etc. que se definieron ya en isometric.obj seguramente por medio de un "#include".

saludos.