Discussion:
no se puede registrar dll
(demasiado antiguo para responder)
gustavo gutierrez
2004-07-03 15:29:37 UTC
hola a todos: recien bajé del sitio del guille dos ejemplos para zipear y
unzipear archivos en vb. al intentar registrar las dll's que traen los
ejemplos me da el siguiente mensaje:

"Se descargó zip32.dll, pero no se encontró el punto de entrada
DLLRegisterServer. No se puede registrar este archivo"

pienso que hay un error en la dll, pero no creo que el guille lo hubiera
puesto en su sitio estando mal. ¿alguien sabe que pasa?
gracias de antemano!!
SoftJaén
2004-07-03 15:38:14 UTC
Post by gustavo gutierrez
recien bajé del sitio del guille dos ejemplos para zipear y
unzipear archivos en vb. al intentar registrar las dll's que
"Se descargó zip32.dll, pero no se encontró el punto de entrada
DLLRegisterServer. No se puede registrar este archivo"
pienso que hay un error en la dll, pero no creo que el guille lo
hubiera puesto en su sitio estando mal. ¿alguien sabe que pasa?
Hola, Gustavo:

Las dos DLL que has descargado, no son componentes ActiveX, por lo que no
puedes registrarlas mediante la utilidad Regsvr32.exe.

Para utilizar esas bibliotecas tienes que declarar las funciones mediante la
instrucción «Declare», igual que harías con cualquier otra función API que
utilizaras.

Un saludo
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
gustavo gutierrez
2004-07-03 16:46:19 UTC
Gracias, Enrique
y como puedo saber si son o no son componentes activex?
saludos!!
Post by SoftJaén
Post by gustavo gutierrez
recien bajé del sitio del guille dos ejemplos para zipear y
unzipear archivos en vb. al intentar registrar las dll's que
"Se descargó zip32.dll, pero no se encontró el punto de entrada
DLLRegisterServer. No se puede registrar este archivo"
pienso que hay un error en la dll, pero no creo que el guille lo
hubiera puesto en su sitio estando mal. ¿alguien sabe que pasa?
Las dos DLL que has descargado, no son componentes ActiveX, por lo que no
puedes registrarlas mediante la utilidad Regsvr32.exe.
Para utilizar esas bibliotecas tienes que declarar las funciones mediante la
instrucción «Declare», igual que harías con cualquier otra función API que
utilizaras.
Un saludo
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
SoftJaén
2004-07-03 17:24:42 UTC
Post by gustavo gutierrez
y como puedo saber si son o no son componentes activex?
Las bibliotecas zip32.dll y unzip32.dll te aseguro que no son componentes
ActiveX. Aparte, creo recordar que «El Guille» tenía unos ejemplos para
utilizar dichas bibliotecas.

¿Qué cómo lo puedes saber? Pues como lo has hecho: si se registra se tratará
de una DLL ActiveX, en caso contrario te dará el error que tú mismo has
obtenido. :-)
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Miguel
2004-07-03 17:30:58 UTC
Post by gustavo gutierrez
Gracias, Enrique
y como puedo saber si son o no son componentes activex?
saludos!!
DllGetClassObject() es la única función requerida de manera obligada.

Saludos
--
Miguel
Heich
2004-07-03 19:08:32 UTC
Hola Gustavo
1.-La manera facil es, precisamente, tratar de registrarla con Regsvr32, si
regresa error, ya sabes

2.-Otra forma es hacerle un DUMP a las clases publicas usando LINK.EXE
situado en la carpeta
VB98 de tu instalacion de VS

LINK /dump /exports c:\Ruta\libreria.dll /out: c:\Ruta\Libreria.txt

a continuacion adjunto un DUMP sobre la zip32.dll
<Pego>

Dump of file zip32.dll

File Type: DLL

Section contains the following exports for ZIP32.dll

0 characteristics
34D299A0 time date stamp Fri Jan 30 21:25:20 1998
0.00 version
1 ordinal base
5 number of functions
5 number of names

ordinal hint RVA name

1 0 00001160 ZpArchive
2 1 00001130 ZpGetOptions
3 2 000010C0 ZpInit
4 3 00001110 ZpSetOptions
5 4 00001B70 ZpVersion

Summary

52000 .data
1000 .idata
2000 .rdata
3000 .reloc
1000 .rsrc
18000 .text

</Pego>


Y acontinuacion un dump sobre una libreria propia, que si es Activex

<Pego>
Dump of file manejadatos.dll

File Type: DLL

Section contains the following exports for ManejaDatos.dll

0 characteristics
40B6ADEC time date stamp Thu May 27 21:11:40 2004
0.00 version
1 ordinal base
4 number of functions
4 number of names

ordinal hint RVA name

1 0 000032CE DllCanUnloadNow
2 1 000032A2 DllGetClassObject
3 2 000032B8 DllRegisterServer
4 3 0000328C DllUnregisterServer

Summary

1000 .data
1000 .reloc
2000 .rsrc
9000 .text

</Pego>

La funcion que interesa es DLLRegisterServer y DLLUnRegisterServer esas son
las que accesa Regsvr32 al
registrar la DLL


3.- La tercera, y mucho mas completa, por la informacion que devuelve, solo
para componentes Activex, es usando la utileria OLEVIEW.EXE
Situada en la carpeta Common\Tools de la carpeta de instalacion de
VS
Abres el OleView, y le das File, View TypeLib, Abres la DLL y alli te
muestra todas las interfaces
publicas que expone el componente Activex. Es sorprendente cuanta info
puedes obtener

4.-Por ultimo, tambien es posible averiguar el dato desde codigo:
<Codigo>
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: ***@Allapi.net

Declare Function DllRegisterServer Lib "ComCtl32.OCX" () As Long
Declare Function DllUnregisterServer Lib "ComCtl32.OCX" () As Long

Const ERROR_SUCCESS = &H0

' To register your OCX use this function:
If DllRegisterServer = ERROR_SUCCESS Then
MsgBox "Registration Successful"
Else
MsgBox "Registration Unsuccessful"
End If

' To unregister your OCX use this function:
If DllUnregisterServer = ERROR_SUCCESS Then
MsgBox "UnRegistration Successful"
Else
MsgBox "UnRegistration Unsuccessful"
End If

</Codigo>

Saludos
--
Heich
heichito[arroba]hotmail[punto]com
Daria todo lo que se por saber la mitad de lo que ignoro.
----------------------------------------------------------
NOTA: este mensaje se proporciona TAL CUAL.
Sin ningun derecho o garantia
Guia de Netiquette:
http://www.geocities.com/heich_programmer/Netiquette.html
----------------------------------------------------------
Post by gustavo gutierrez
Gracias, Enrique
y como puedo saber si son o no son componentes activex?
saludos!!
gustavo gutierrez
2004-07-03 18:19:34 UTC
!!Gracias a todos!!
Post by Heich
Hola Gustavo
1.-La manera facil es, precisamente, tratar de registrarla con Regsvr32, si
regresa error, ya sabes
2.-Otra forma es hacerle un DUMP a las clases publicas usando LINK.EXE
situado en la carpeta
VB98 de tu instalacion de VS
LINK /dump /exports c:\Ruta\libreria.dll /out: c:\Ruta\Libreria.txt
a continuacion adjunto un DUMP sobre la zip32.dll
<Pego>
Dump of file zip32.dll
File Type: DLL
Section contains the following exports for ZIP32.dll
0 characteristics
34D299A0 time date stamp Fri Jan 30 21:25:20 1998
0.00 version
1 ordinal base
5 number of functions
5 number of names
ordinal hint RVA name
1 0 00001160 ZpArchive
2 1 00001130 ZpGetOptions
3 2 000010C0 ZpInit
4 3 00001110 ZpSetOptions
5 4 00001B70 ZpVersion
Summary
52000 .data
1000 .idata
2000 .rdata
3000 .reloc
1000 .rsrc
18000 .text
</Pego>
Y acontinuacion un dump sobre una libreria propia, que si es Activex
<Pego>
Dump of file manejadatos.dll
File Type: DLL
Section contains the following exports for ManejaDatos.dll
0 characteristics
40B6ADEC time date stamp Thu May 27 21:11:40 2004
0.00 version
1 ordinal base
4 number of functions
4 number of names
ordinal hint RVA name
1 0 000032CE DllCanUnloadNow
2 1 000032A2 DllGetClassObject
3 2 000032B8 DllRegisterServer
4 3 0000328C DllUnregisterServer
Summary
1000 .data
1000 .reloc
2000 .rsrc
9000 .text
</Pego>
La funcion que interesa es DLLRegisterServer y DLLUnRegisterServer esas son
las que accesa Regsvr32 al
registrar la DLL
3.- La tercera, y mucho mas completa, por la informacion que devuelve, solo
para componentes Activex, es usando la utileria OLEVIEW.EXE
Situada en la carpeta Common\Tools de la carpeta de instalacion de
VS
Abres el OleView, y le das File, View TypeLib, Abres la DLL y alli te
muestra todas las interfaces
publicas que expone el componente Activex. Es sorprendente cuanta info
puedes obtener
<Codigo>
'KPD-Team 1999
'URL: http://www.allapi.net/
Declare Function DllRegisterServer Lib "ComCtl32.OCX" () As Long
Declare Function DllUnregisterServer Lib "ComCtl32.OCX" () As Long
Const ERROR_SUCCESS = &H0
If DllRegisterServer = ERROR_SUCCESS Then
MsgBox "Registration Successful"
Else
MsgBox "Registration Unsuccessful"
End If
If DllUnregisterServer = ERROR_SUCCESS Then
MsgBox "UnRegistration Successful"
Else
MsgBox "UnRegistration Unsuccessful"
End If
</Codigo>
Saludos
--
Heich
heichito[arroba]hotmail[punto]com
Daria todo lo que se por saber la mitad de lo que ignoro.
----------------------------------------------------------
NOTA: este mensaje se proporciona TAL CUAL.
Sin ningun derecho o garantia
http://www.geocities.com/heich_programmer/Netiquette.html
----------------------------------------------------------
Post by gustavo gutierrez
Gracias, Enrique
y como puedo saber si son o no son componentes activex?
saludos!!