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.
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..
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 *)¶ms[0] ;
float valor2 = *(float *)¶ms[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) ===|
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.