Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: josette en 14 de Marzo de 2006, 01:26:37 PM

Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: josette en 14 de Marzo de 2006, 01:26:37 PM
    Hola a todos!!


  Ya tengo parte de miniengine, pero ahora quiero que se pueda usar por todos haciendolo una dll.

  ¿que tengo que hacer? He de poner algo en los fuentes? la dll es dependiente del compilador que la genera?
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: Marci en 14 de Marzo de 2006, 02:22:35 PM
 Normalmente los compiladores vienen con new->proyect->dll o algo similar. Yo uso C++ Builder y el dev c++ y los dos traen esa opción. Basicamente te crean una plantilla para que puedas usarla con tu dll.

Cita de: " josette @ 14/03/06"
la dll es dependiente del compilador que la genera
En principio las dll generadas por un compilador deberian funcionar bien con todos los demas. El problema viene si decides utilizar la dll como libreria estatica (lo que suele hacer todo el mundo). Si eliges esta opcion tienes que acompañar a la dll con una libreria lib y ahi si que son incompatibles (por ejemplo las de visual c++ con las del builder).

La otra opcion es que llames al codigo de la dll en tiempo de ejecución con lo que no habria problemas de compiladores pero esta opcion da un poco mas de trabajo
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: Lex en 14 de Marzo de 2006, 02:40:30 PM
...
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: josette en 22 de Marzo de 2006, 04:43:33 PM
 He encontrado un pequeño juego en donde se ha creado su dll para sus librerias y la verdad esque me ha servido de gran ayuda. Dejo el enlace para quien lo quiera ver:

http://www.gameprogrammer.org/downloads/plane-src.zip

Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: TheAzazel en 22 de Marzo de 2006, 07:15:02 PM
 Por cierto y para quitar ilusiones...

si tu engine esta en C, entonces podras decir tranquilamente "Una DLL para gobernarlos a todos(=los compiladores)"

pero como este en C++, entonces olvidate y tendras que decir "Una DLL para cada uno, y yo para volverme loco controlandolas"

el resto, ya te lo han dicho, el dllimport y dllexport :)
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: Marci en 23 de Marzo de 2006, 12:46:37 AM
 
Cita de: " TheAzazel @ 22/03/06"pero como este en C++, entonces olvidate
Si las enlazas en tiempo de ejecución tambien? :blink:  
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: TheAzazel en 23 de Marzo de 2006, 12:52:35 AM
 En ese caso..supongo que no, pero nunca lo he probado, siempre me ha parecido muy engorroso asi que no te lo puedo asegurar del todo. Aunque la teoria me dice que deberia de funcionar bien...

alguien que arroje luz sobre este tema??
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: AgeR en 23 de Marzo de 2006, 10:00:06 AM
 Aunque es un poco offtopic, ya que pregunta sobre hacer una DLL...

Las librerías dinámicas en linux o mac se crean igual? Sabéis de algún tutorial o ejemplo para esto?
Me refiero a que lo de dllimport, etc... no servirá para estos sistemas. Usan un sistema parecido?

El caso es que estoy creandome un framework con SDL y ya que SDL es multiplataforma, me gustaría que el framework también lo fuera. Supongo que la información puede servirle tb a josette si quiere hacer su engine multiplataforma.
Título: Como Crear Una Dll Para Mi Miniengine
Publicado por: TheAzazel en 23 de Marzo de 2006, 11:00:47 AM
 En MacOS ni idea...

pero en Linux si :P

aunque una dll en linux(normalmente un .so y se llaman librerias compartidas) no tiene nada que ver con una dll de windows, el sistema de uso es bastante similar. Ademas, gnu gcc soporta tambien los dllimport/dllexport(en realidad, los emula para ser mas compatible con el codigo windows, internamente utiliza unos sistemas de visibilidad que dan mas juego que en windows).

Echa un vistazo a CRM32Pro.h y al principio de todo, veras como conseguir que funcione con Linux. El resto es lo mismo, generas tambien una .lib de importacion y luego linkas contra ella y a funcionar con la .so

Saludos