Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[Kolham] - Problema englobando la lib en una DLL

Iniciado por TheAzazel, 07 de Septiembre de 2006, 07:25:25 PM

« anterior - próximo »

TheAzazel

Hola!

Sí, es una DLL que contiene CRM32. La cosa está en que, el .Init() deberá estar en el código principal y no en mi DLL, pero mi DLL debería actuar sobre el principal. Me explico, en...

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved )
{  
  return 1;
}


... no hay que meter el init


if (CRM32Pro.Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) < 0)
 

y supongo q menos aún el CRM32Pro.SetVideoMode(), pues me crearía una segunda ventana. Todo eso, ¿no se debería inicializar en el principal, y que la DLL actúe sobre este?. Esque falla cuando haces por ejemplo un Load, y se sale como bien dices debido a q parece q no esté inicializado. Yo creo que la solución está en saber donde inicializar correctamente, y cómo indicar a mi DLL qu actue sobre algo ya inicializado.

Sobre tu PD, sí, se trata de un "juego", con intenciones comerciales (te iba a comentar sobre este cuando ya se puediese mostar), y bueno, según tu licencia puede ser utilizado para este fín no?, si existe algún problema dímelo.

Por cierto, gracias por toda esta ayuda!

(mensaje de Kolhman)

TheAzazel

joooooeee machoooo, nah, q no quiere ir, jejeje Razz

Citar
otra cosilla, vas a crear una dll que a su vez englobe a crm32pro... pero desde tu programa(que usara tu lib), tendra visible las interfaces y clases de crm32pro? o solo las de tu lib?

sí, veamos, se trata de que mi lib va a controlar una cosa en concreto, la cual la maneja con crm32pro, pero desde mi programa, también va a usar crm32pro para controlar otras cosas.

Lo de los punteros ya lo he hecho, y seguimos igual, vamos las interfaces principales (porq ya puedo estar equivocándome en cualquier cosa son), CRM32Pro, IImage, IVideo, no?.

Lo tenemos acorralado Razz, jejeje, porq es cuando intentas hacer algo con la lib mediante la crm32, inmediantamente se sale, sin dar error. Puede estar interviniendo por aquí la SDL y q esté haciendo algo?????

Ah, y sí, claro, puedes perfectamente abrir un hilo Wink.

A ver, mañana más..... sino, tengo la solución q menos me gusta, y es no prescindir de mi librería, y de aplicar dicho código directamente, sin librería de por medio.

(mensaje de Kolhman)

Kolham

Me acordé de q había una librería hecha, y así es, Motoko, la q hizo Lex. Le estoy echando un ojo al código, y me he fijado que inicializa todo en su librería, y todo es dibujado en esta, pero no se si funcionaría, que se cargase algo (vía Load, etc..) dentro de su test (el CutreCiv q él llama :) ).


TheAzazel

Si estas usando el VS como dijiste...pasa del dllmain y cia... crea un proyecto y en las propiedades dile que es una libreria dinamica y fuera.

Yo he conseguido con una prueba rapida, incluir todo crm32pro(su version estatica) con otra lib que emularia la tuya creando una dll que contiene todo y despues, un miniprograma que lo utliza y ningun problema...

como te dije en el msg...si puedes pasame tu prj(quita todo lo que puedas, deja solo la chicha) y veo que esta pasando vale?

Saludos!


Kolham

Esto al final no lo voy a probar hasta más adelante.... cuando ya esté todo más avanzado, pues he cambiado el modo de hacerlo.

Cuando lo haga, os diré ;).

TheAzazel

De todos modos te comento.
Actualmente la licencia de SDL es muy flexible siempre y cuando utilices su dll, pero en caso de linkar estaticamente, debes proporcionar el codigo para que el usuario final puede reenlazar con otra version de SDL.
Vamos, que CRM32Pro esta utilizando SDL en modo estatico, por eso, tengo que poner el codigo fuente disponible :) pero si usas CRM32Pro en modo dll, tu aplicacion no esta obligada a mostrar el codigo ahora bien...si ahora englobas CRM32Pro en tu propia lib..tendras que liberar tambien el codigo.

Todo esto para cumplir la ley al completo :)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.