Otra forma de leer una DLL

devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Otra forma de leer una DLL

Post 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
Visite Chiapas, el paraiso de México.
User avatar
jll-fwh
Posts: 385
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia
Contact:

Re: Otra forma de leer una DLL

Post by jll-fwh »

Buenas;

Usa ficheros .RES.

Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 3.1.1 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA + OURXDBU -
S.O: XP / Win 7
Blog: http://javierlloris.blogspot.com.es/
e-mail: jllorispersonal@gmail.com
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Otra forma de leer una DLL

Post by acuellar »

Como indica JLL

Desde PelleC graba la DLL en RES y lo enlaza como un programas mas

Saludos,

Adhemar
Saludos,

Adhemar C.
devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Post 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
Visite Chiapas, el paraiso de México.
jMelgar
Posts: 7
Joined: Sat Oct 04, 2008 12:57 pm

Re: Otra forma de leer una DLL

Post by jMelgar »

devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Post 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
Visite Chiapas, el paraiso de México.
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Otra forma de leer una DLL

Post 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
Saludos,

Adhemar C.
devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Post 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
Visite Chiapas, el paraiso de México.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Otra forma de leer una DLL

Post 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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Otra forma de leer una DLL

Post 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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Post 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
Visite Chiapas, el paraiso de México.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Otra forma de leer una DLL

Post 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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
nnicanor
Posts: 296
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: Otra forma de leer una DLL

Post 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
Nicanor Martinez M.
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
nnicanor
Posts: 296
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: Otra forma de leer una DLL

Post 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
Nicanor Martinez M.
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Otra forma de leer una DLL

Post 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
Post Reply