Page 1 of 2
Otra forma de leer una DLL
Posted: Sat Oct 08, 2011 1:32 am
by devtuxtla
Hola FiveWinners.
Deseo reducir el numero de DLL que se acompañan en la instalacion de mi aplicacion en la PC de mi cliente; habra una forma de leer una DLL sin que esta exista en al directorio de mi aplicacion? Es decir, que esta DLL forme parte natural de mi aplicacion y se pueda cargar a memoria y usarla?
Por ejemplo podria ser, poner esta dll en un archivo MEMO o BLOB y que la misma aplicacion la ponga en momoria antes de usarla?
Asi cuando se instale el sistema en mi cliente, solo sera necesario instalar el EXE.
Alguien conoce el truco ?
Saludos
Re: Otra forma de leer una DLL
Posted: Sat Oct 08, 2011 3:17 am
by jll-fwh
Buenas;
Usa ficheros .RES.
Un saludo
JLL
Re: Otra forma de leer una DLL
Posted: Sat Oct 08, 2011 10:58 pm
by acuellar
Como indica JLL
Desde PelleC graba la DLL en RES y lo enlaza como un programas mas
Saludos,
Adhemar
Re: Otra forma de leer una DLL
Posted: Sun Oct 09, 2011 6:35 pm
by devtuxtla
Hola jll / acuerllar
Gracias por tu respuesta.
Sin embargo, como hago que las funciones definidas en el DLL se ejecuten, ya hice la prueba con Loadlibrary() y nada.
Como hago referencia a la DLL definida en el RES?
Saludos
Re: Otra forma de leer una DLL
Posted: Sun Oct 09, 2011 6:44 pm
by jMelgar
Re: Otra forma de leer una DLL
Posted: Sun Oct 09, 2011 7:04 pm
by devtuxtla
Hola jMelgar
Gracias por tu propuesta, pero no es la solucion, por ahora.
La aplicacion debe se capaz de hacerlo sin uso de herramientas externas.
Sin embargo, gracias por el tip.
saludos
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 1:26 pm
by acuellar
devtuxtla
No tenes que cargar nada, ya que el .RES es parte del ejecutable.
Ejemplo:
Code: Select all
DEFINE ICON oIcon RESOURCE 1
DEFINE DIALOG oDlg RESOURCE "DATOS"
DEFINE BUTTON OF oBtnBar RESOURCE "BOTON-SALIR1","","","BOTON-SALIR2" ACTION oDlg:End()
Saludos,
Adhemar
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 7:48 pm
by devtuxtla
Hola aCuellar.
Gracias por contestar, pero no me refiero a recursos, si no a funciones definidas dentro de la DLL
Ejemplo:
DLL32 FUNCTION MyCode(Texto As LPSTR, FileName As LPSTR) AS LONG ;
PASCAL FROM "MyCode" LIB "MyCode.Dll"
La Dll esta implicita dentro del ejecutable, como un .RES
Sin embargo si llamo a la funcion dentro de DLL asi:
nRet:=MyCode("este es un mensaje")
El resutltado es que no encuentra la DLL.
Alguna idea ?
Saludos
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 8:11 pm
by Daniel Garcia-Gil
Hola
puedes agregar la DLL al recurso (.res/rc) como datos binarios (RCDATA) desde el programa crea una rutina que lea el recurso y lo grabe en disco (fivewin proporciona la funcion desde la version 11.07 una funcion que te facilita esa extraccion y el grabado)
* New: function RCDataToFile( hInstance, cResName, cFileName ), save to file a binary resource,
hInstance [in, optional]: A handle to the module contains the resource. If this parameter is 0, the function searches the module used to create the current process.
cResName [in]: string with name of the resource.
cFileName [in]: string with name of file will be saved
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 8:20 pm
by Daniel Garcia-Gil
Daniel Garcia-Gil wrote:puedes agregar la DLL al recurso (.res/rc) como datos binarios (RCDATA) desde el programa crea una rutina que lea el recurso y lo grabe en disco (fivewin proporciona la funcion desde la version 11.07 una funcion que te facilita esa extraccion y el grabado)
ojo... si tienes alguna libreria de importacion en relacion con la dll esta opcion no te servira, sino pruebalo a ver si te resulta por esta via
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 8:25 pm
by devtuxtla
Hola Daniel.
Gracias por tu respuesta.
Sin embargo tengo una version anterior a la 11.07.
Pregurta: es posible leer el recurso de la DLL y ponerlo en momoria ? algo asi como loadlibrary() ?
Saludos
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 8:36 pm
by Daniel Garcia-Gil
Hola
si no me equivoco, LoadLibrary, no carga toda la DLL en memoria, solo la direccion donde se encuentra las funciones contenidas en esta
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 11:37 pm
by nnicanor
Hola,
Puedes hacer lo siguiente:
Compactas todas las DLL, EXE y OCX con PeCompact u UPX y luego con molebox haces un solo exe que empaquete tu en tu exe y todas las DLL que necesitas y los OCX.
PeCompact y Molebox son de uso comercial pero el costo es minimo.
Nosotros los usamos para nuestras aplicaciones basadas en MySQL con Tdolphin y Fastrepor, proporcionamos un link para descarga y actualizacion del EXE asi el exe esta disponible en cualquier parte en un navegador Web.
Slds,
Nicanor Maritinez
Re: Otra forma de leer una DLL
Posted: Mon Oct 10, 2011 11:54 pm
by nnicanor
Hola,
Me acabo de encontrar con una utilidad gratis se llama enigma virtual box, empaqueta un un solo exe las DLL, OCX.
http://enigmaprotector.com/en/aboutvb.html
Slds
Re: Otra forma de leer una DLL
Posted: Tue Oct 11, 2011 3:48 am
by Willi Quintana
Enigma funciona a 100...
Tengo un app.exe (comprimido con upx) + freeimage.dll + prev32.dll + libmysql.dll + config.cfg todo esto se convirtio en un solo EXE... (appnew.exe)
y funciona perfectamente...
http://enigmaprotector.com/en/aboutvb.html