Otra forma de leer una DLL

Otra forma de leer una DLL

Postby devtuxtla » Sat Oct 08, 2011 1:32 am

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.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Postby jll-fwh » Sat Oct 08, 2011 3:17 am

Buenas;

Usa ficheros .RES.

Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Otra forma de leer una DLL

Postby acuellar » Sat Oct 08, 2011 10:58 pm

Como indica JLL

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

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1599
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Otra forma de leer una DLL

Postby devtuxtla » Sun Oct 09, 2011 6:35 pm

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.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Postby jMelgar » Sun Oct 09, 2011 6:44 pm

jMelgar
 
Posts: 7
Joined: Sat Oct 04, 2008 12:57 pm

Re: Otra forma de leer una DLL

Postby devtuxtla » Sun Oct 09, 2011 7:04 pm

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.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Postby acuellar » Mon Oct 10, 2011 1:26 pm

devtuxtla

No tenes que cargar nada, ya que el .RES es parte del ejecutable.

Ejemplo:
Code: Select all  Expand view

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.
User avatar
acuellar
 
Posts: 1599
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Otra forma de leer una DLL

Postby devtuxtla » Mon Oct 10, 2011 7:48 pm

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.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Postby Daniel Garcia-Gil » Mon Oct 10, 2011 8:11 pm

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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Otra forma de leer una DLL

Postby Daniel Garcia-Gil » Mon Oct 10, 2011 8:20 pm

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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Otra forma de leer una DLL

Postby devtuxtla » Mon Oct 10, 2011 8:25 pm

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.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Otra forma de leer una DLL

Postby Daniel Garcia-Gil » Mon Oct 10, 2011 8:36 pm

Hola

si no me equivoco, LoadLibrary, no carga toda la DLL en memoria, solo la direccion donde se encuentra las funciones contenidas en esta
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Otra forma de leer una DLL

Postby nnicanor » Mon Oct 10, 2011 11:37 pm

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: 295
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: Otra forma de leer una DLL

Postby nnicanor » Mon Oct 10, 2011 11:54 pm

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
nnicanor
 
Posts: 295
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: Otra forma de leer una DLL

Postby Willi Quintana » Tue Oct 11, 2011 3:48 am

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
User avatar
Willi Quintana
 
Posts: 1004
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 138 guests