Ayuda con tlbimp

13/09/2005 - 14:25 por fede | Informe spam
Hola todos: Cuando intento importar una dll con el tlbimp me devuelve un
error que dice tipo de libreria no valido. Lo que necesito hacer el
transformar mi dll en una dll Com, pero no se si hay que tener algo en cuenta
a la hora de implementar la clase ¿Alguna sugerencia?

Preguntas similare

Leer las respuestas

#1 José Miguel Torres
13/09/2005 - 15:18 | Informe spam
Hola,
debes utilizar tlbexp así:

C:\tlbexp dlldotNET.dll /out:dlldotNET.tlb
luego registrala
C:egasm /tlb:dlldotNET.tlb dlldotNET.dll
instalal en el GAC
C:\gacutil.exe /i dlldotNET.dll
para tener acceso en un contexto a todos los posibles clientes, sino saltate
este paso y copia el tlb en la carpeta de tu proyecto p.e. VB6.0

Recuerda implementar una interface publica, si no no será visible desde tu
cliente COM.

Si la utilizas desde VB6.0 agrega en referencias el archivo resultante tlb.

espero haberte ayudado

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"fede" escribió en el mensaje
news:
Hola todos: Cuando intento importar una dll con el tlbimp me devuelve un
error que dice tipo de libreria no valido. Lo que necesito hacer el
transformar mi dll en una dll Com, pero no se si hay que tener algo en
cuenta
a la hora de implementar la clase ¿Alguna sugerencia?
Respuesta Responder a este mensaje
#2 fede
13/09/2005 - 17:10 | Informe spam
Esta clase que quiero convertir en Com implementa una interface hecha en C#,
lo que necesito saber es si debo agregarle algun tipo de encabezado con
atributos o cualquier cosa para que me funcione en Com

"José Miguel Torres" escribió:

Hola,
debes utilizar tlbexp así:

C:\tlbexp dlldotNET.dll /out:dlldotNET.tlb
luego registrala
C:egasm /tlb:dlldotNET.tlb dlldotNET.dll
instalal en el GAC
C:\gacutil.exe /i dlldotNET.dll
para tener acceso en un contexto a todos los posibles clientes, sino saltate
este paso y copia el tlb en la carpeta de tu proyecto p.e. VB6.0

Recuerda implementar una interface publica, si no no será visible desde tu
cliente COM.

Si la utilizas desde VB6.0 agrega en referencias el archivo resultante tlb.

espero haberte ayudado

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"fede" escribió en el mensaje
news:
> Hola todos: Cuando intento importar una dll con el tlbimp me devuelve un
> error que dice tipo de libreria no valido. Lo que necesito hacer el
> transformar mi dll en una dll Com, pero no se si hay que tener algo en
> cuenta
> a la hora de implementar la clase ¿Alguna sugerencia?



Respuesta Responder a este mensaje
#3 José Miguel Torres
13/09/2005 - 17:16 | Informe spam
Si has echo lo de la interface y utilizas el tlbexp como te indiqué antes,
te funcionará, si no es así, dime donde falla.

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com
"fede" escribió en el mensaje
news:
Esta clase que quiero convertir en Com implementa una interface hecha en
C#,
lo que necesito saber es si debo agregarle algun tipo de encabezado con
atributos o cualquier cosa para que me funcione en Com

"José Miguel Torres" escribió:

Hola,
debes utilizar tlbexp así:

C:\tlbexp dlldotNET.dll /out:dlldotNET.tlb
luego registrala
C:egasm /tlb:dlldotNET.tlb dlldotNET.dll
instalal en el GAC
C:\gacutil.exe /i dlldotNET.dll
para tener acceso en un contexto a todos los posibles clientes, sino
saltate
este paso y copia el tlb en la carpeta de tu proyecto p.e. VB6.0

Recuerda implementar una interface publica, si no no será visible desde
tu
cliente COM.

Si la utilizas desde VB6.0 agrega en referencias el archivo resultante
tlb.

espero haberte ayudado

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"fede" escribió en el mensaje
news:
> Hola todos: Cuando intento importar una dll con el tlbimp me devuelve
> un
> error que dice tipo de libreria no valido. Lo que necesito hacer el
> transformar mi dll en una dll Com, pero no se si hay que tener algo en
> cuenta
> a la hora de implementar la clase ¿Alguna sugerencia?



Respuesta Responder a este mensaje
#4 fede
13/09/2005 - 18:43 | Informe spam
¿No se podria utilizar una interface por defecto, utilizando
[ClassInterface(ClassInterfaceType.AutoDual)] en la declaracion de la clase?,
sino, si eso es lo que estoy haciendo mal, que debería tener en cuenta para
crear la interface explicitamente. ()

"José Miguel Torres" escribió:

Si has echo lo de la interface y utilizas el tlbexp como te indiqué antes,
te funcionará, si no es así, dime donde falla.

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com
"fede" escribió en el mensaje
news:
> Esta clase que quiero convertir en Com implementa una interface hecha en
> C#,
> lo que necesito saber es si debo agregarle algun tipo de encabezado con
> atributos o cualquier cosa para que me funcione en Com
>
> "José Miguel Torres" escribió:
>
>> Hola,
>> debes utilizar tlbexp así:
>>
>> C:\tlbexp dlldotNET.dll /out:dlldotNET.tlb
>> luego registrala
>> C:egasm /tlb:dlldotNET.tlb dlldotNET.dll
>> instalal en el GAC
>> C:\gacutil.exe /i dlldotNET.dll
>> para tener acceso en un contexto a todos los posibles clientes, sino
>> saltate
>> este paso y copia el tlb en la carpeta de tu proyecto p.e. VB6.0
>>
>> Recuerda implementar una interface publica, si no no será visible desde
>> tu
>> cliente COM.
>>
>> Si la utilizas desde VB6.0 agrega en referencias el archivo resultante
>> tlb.
>>
>> espero haberte ayudado
>>
>> saludos
>>
>>
>> José Miguel Torres
>> jtorres_diaz~~ARROBA~~terra.es
>> http://jmtorres.blogspot.com
>>
>> "fede" escribió en el mensaje
>> news:
>> > Hola todos: Cuando intento importar una dll con el tlbimp me devuelve
>> > un
>> > error que dice tipo de libreria no valido. Lo que necesito hacer el
>> > transformar mi dll en una dll Com, pero no se si hay que tener algo en
>> > cuenta
>> > a la hora de implementar la clase ¿Alguna sugerencia?
>>
>>
>>



Respuesta Responder a este mensaje
#5 José Miguel Torres
14/09/2005 - 10:26 | Informe spam
SI, si que se puede, de hecho es otra alternativa. La pregunta es ¿cual es
la diferencia? a continuación hago un 'pegar' de un trozo de texto del MSDN
Library que lo explica.

*****************************************************************************************
PRECAUCIÓN Si se usa la interfaz de clase en lugar de definir una
interfaz propia de manera explícita, el control de las futuras versiones de
la clase administrada puede ser más complicado. Antes de usar la interfaz de
clase lea las instrucciones siguientes.
Defina una interfaz explícita para que la usen los clientes COM en lugar de
generar la interfaz de clase.

Como la interoperabilidad COM genera una interfaz de clase automáticamente,
los cambios en versiones posteriores de la clase pueden modificar el diseño
de la interfaz de clase expuesta por Common Language Runtime. Puesto que los
clientes COM no están preparados normalmente para controlar cambios en el
diseño de una interfaz, se interrumpen si se cambia el diseño de miembro de
la clase.

Esta instrucción enfatiza la idea de que las interfaces expuestas a los
clientes COM no se deben modificar. Para reducir el riesgo de que los
clientes COM se interrumpan por volver a ordenar involuntariamente el diseño
de interfaz, aísle del diseño de interfaz todos los cambios que se hagan en
la clase definiendo las interfaces de manera explícita.
**************************************************************************************

Para crear la interface explicita no tienes que tener en cuenta nada
extraordinario, sencillamente crea la interface, haz que tu clase 'herede'
de la interface y vigila con los contexto publicos y privados.

Dime a ver si te sale, saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com





"fede" escribió en el mensaje
news:
¿No se podria utilizar una interface por defecto, utilizando
[ClassInterface(ClassInterfaceType.AutoDual)] en la declaracion de la
clase?,
sino, si eso es lo que estoy haciendo mal, que debería tener en cuenta
para
crear la interface explicitamente. ()

"José Miguel Torres" escribió:

Si has echo lo de la interface y utilizas el tlbexp como te indiqué
antes,
te funcionará, si no es así, dime donde falla.

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com
"fede" escribió en el mensaje
news:
> Esta clase que quiero convertir en Com implementa una interface hecha
> en
> C#,
> lo que necesito saber es si debo agregarle algun tipo de encabezado con
> atributos o cualquier cosa para que me funcione en Com
>
> "José Miguel Torres" escribió:
>
>> Hola,
>> debes utilizar tlbexp así:
>>
>> C:\tlbexp dlldotNET.dll /out:dlldotNET.tlb
>> luego registrala
>> C:egasm /tlb:dlldotNET.tlb dlldotNET.dll
>> instalal en el GAC
>> C:\gacutil.exe /i dlldotNET.dll
>> para tener acceso en un contexto a todos los posibles clientes, sino
>> saltate
>> este paso y copia el tlb en la carpeta de tu proyecto p.e. VB6.0
>>
>> Recuerda implementar una interface publica, si no no será visible
>> desde
>> tu
>> cliente COM.
>>
>> Si la utilizas desde VB6.0 agrega en referencias el archivo resultante
>> tlb.
>>
>> espero haberte ayudado
>>
>> saludos
>>
>>
>> José Miguel Torres
>> jtorres_diaz~~ARROBA~~terra.es
>> http://jmtorres.blogspot.com
>>
>> "fede" escribió en el mensaje
>> news:
>> > Hola todos: Cuando intento importar una dll con el tlbimp me
>> > devuelve
>> > un
>> > error que dice tipo de libreria no valido. Lo que necesito hacer el
>> > transformar mi dll en una dll Com, pero no se si hay que tener algo
>> > en
>> > cuenta
>> > a la hora de implementar la clase ¿Alguna sugerencia?
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida