Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Yawin on October 28, 2013, 05:02:45 PM

Title: Compilar mi propio módulo
Post by: Yawin on October 28, 2013, 05:02:45 PM
Hola a todos, llevo semanas buscando información respecto a esto. En el pdf de Osk que tengo, la mayor parte de los enlaces que vienen están rotos. Y, sinceramente, si no instalo con apt-get, no se cómo instalar cosas.


¿Alguien sabría decirme qué tengo que hacer para poder compilar un módulo?


De momento, para simplificar, quiero hacer un módulo que tenga la función prueba. de forma que en mi códifo ponga "string prueb=prueba();" y devuelva un string que ponga "yeah", por ejemplo.
Title: Re:Compilar mi propio módulo
Post by: l1nk3rn3l on October 29, 2013, 03:49:12 AM
Busca en google el IDE
codeblocks


descargatelo con el  compilador mingw incluido ...

bajate los ejemplos de DLLS del bennupack y a compilar...  debes cuadrar las rutas  correctas
en el proyecto ..
si requieres algun archivo que falte entonces lo tienes descargando los fuentes de bennu en la
seccion descargas de esta pagina..


Title: Re:Compilar mi propio módulo
Post by: Yawin on October 29, 2013, 10:40:05 AM

Me he bajado esas librerías. He abierto el proyecto de "exampleSumarLib" y no me estoy enterando de nada.
El código es:
/*
  DLL template


  Author: ColDev


  License: free for all
*/


#include <stdio.h>
#include <stdlib.h>


#ifdef TARGET_BEOS
#include <posix/assert.h>
#else
#include <assert.h>
#endif


#include <math.h>
#include <memory.h>


//#include "bgdi.h"
#include <bgddl.h>


#include "fmath.h"


#include "SDL.h"


#include "dlvaracc.h"


#include "windows.h"


HINSTANCE hDLL = NULL;




//-----------------------------------------------------------------------
//funciones internas de Bennu
//-----------------------------------------------------------------------




//-----------------------------------------------------------------------
DLLEXPORT void __bgdexport( sumarlib, module_initialize )()
{




}




DLLEXPORT void __bgdexport( sumarlib, module_finalize )()
{






}


#include <SDL_syswm.h>//SDL stuff (for getting windows etc)




//---------------------------------------------------
//FUNCIONES PPALES
//---------------------------------------------------




//constantes


DLLEXPORT DLCONSTANT  __bgdexport(sumarlib,constants_def)[] = {
    { "FALSO",      TYPE_DWORD,      0 },
    { "VERDADERO",  TYPE_DWORD,     !0 },
    { NULL, TYPE_DWORD, 0 }
} ;






//variables locales
DLLEXPORT char *  __bgdexport(sumarlib,locals_def) = "int mivariablelocal= 5; \n"
            "int mivariablelocal2= 6;  \n";






/* Definicion de variables globales (usada en tiempo de compilacion) */


DLLEXPORT char *  __bgdexport(sumarlib,globals_def)=
    "INT M8E_RENDERALPHA = 90; \n"
    "INT M8E_RENDERR = 0 ; \n"
    "INT M8E_RENDERG = 0 ; \n"
    "INT M8E_RENDERB = 0 ; \n";








/* ----------------------------------------------------------------- */
/* Son las variables que se desea acceder.                           */
/* El interprete completa esta estructura, si la variable existe.    */
/* (usada en tiempo de ejecucion)
      */
DLLEXPORT DLVARFIXUP  __bgdexport(sumarlib,globals_fixup)[] = {
    /* Nombre de variable global, puntero al dato, tamaño del elemento, cantidad de elementos */
                                { "M8E_RENDERALPHA" , NULL, -1, -1 },
                                { "M8E_RENDERR"     , NULL, -1, -1 },
                                { "M8E_RENDERG"     , NULL, -1, -1 },
                                { "M8E_RENDERB"     , NULL, -1, -1 },
                                { NULL, NULL, -1, -1 }
                                };




/* Son las variables que se desea acceder.                          */
/* El interprete completa esta estructura, si la variable existe.    */
/* ( usada en tiempo de ejecucion)              */


DLLEXPORT DLVARFIXUP  __bgdexport(sumarlib,locals_fixup)[] = {
    /* Nombre de variable local, puntero al offset del dato, tamaño del elemento, cantidad de elementos */
                                { "x", (void *)-1, -1, -1 },
                                { "y", (void *)-1, -1, -1 },
                                { "graph",(void *) -1, -1, -1 },
                                { "loc1",(void *) -1, -1, -1 },
                                { "loc2",(void *) -1, -1, -1 },
                                { "reserved.status",(void *) -1, -1, -1 },
                               { 0,0, -1, -1 }
                                };


//----------------------------------------------------------------------- */








// funciones a exportar
//-----------------------------------------------------------------------
static int sumarint(INSTANCE * my, int * params)
{
   return params[0]+params[1];
}




static int sumarfloat(INSTANCE * my, int * params)
{
    float valor1 = *(float *)&params[0] ;
    float valor2 = *(float *)&params[1] ;
    float fresultado= valor1 + valor2;


    return *(Sint32 *)&fresultado  ;
}


static int sumarstr(INSTANCE * my, int * params)
{
  const char *cadena1 =(const char *) string_get(params[0]) ; //capture string1 in params
    const char *cadena2 =(const char *) string_get(params[1]) ; //capture string2 in params
    int resultado = string_new("") ; //create a new null string to use with fenix


    string_concat (resultado, (char*)cadena1) ;
    string_concat (resultado, (char*)cadena2) ;
string_use(resultado) ;  //fenix internal update


string_discard (params[0]) ; //erase strings - params -> free memory
string_discard (params[1]) ;


return (resultado) ;
}








/* ----------------------------------------------------------------- */
/* Declaracion de funciones                                          */


#define FENIX_export(a,b,c,d)  {a,b,c,(void*)d}




DLLEXPORT DLSYSFUNCS  __bgdexport(sumarlib,functions_exports)[] = {
    //initialize
FENIX_export ("SUMAR_INT", "II", TYPE_DWORD, sumarint ),
FENIX_export ("SUMAR_FLOAT", "FF", TYPE_FLOAT, sumarfloat ),
FENIX_export ("SUMAR_STR", "SS", TYPE_STRING, sumarstr ),
{ 0            , 0     , 0         , 0              }
};






/* ----------------------------------------------------------------- */






DLLEXPORT char * __bgdexport(sumarlib,modules_dependency)[] = {
"libsdlhandler",
"mod_string",
NULL
};



Por otro lado, cuando pulso F9 me salta el siguiente error:
||=== sumarlib, Release ===|
ld.exe||cannot find -lbgdrtm|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|
Title: Re:Compilar mi propio módulo
Post by: SplinterGU on October 29, 2013, 12:44:14 PM
no se si usa makefile o que, nunca vi ese proyecto, pero necesitas tener bennugd con sus headers y librerias para poder compilar, y asegurar que apuntes a los paths correctos... en un makefile seria -L donde apunta al directorio de las libs y -I para el directorio de los includes/.h, puedes tener tantos de estos como necesites.