Compilar mi propio módulo

Started by Yawin, October 28, 2013, 05:02:45 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

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.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

l1nk3rn3l

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..



Yawin


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) ===|
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2