Pregunta

Tengo un proyecto VB.Net que debe utilizar una tercera parte de DLL para el que hay también una interoperabilidad montaje. Así que tengo algo como esto:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

He intentado añadir la referencia a la interoperabilidad directamente en el proyecto, sino en la ejecución del archivo Tengo una COM error no registrado.

Por lo tanto, he intentado registrar la interoperabilidad de la siguiente manera:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

Incluso después de reiniciar VS, el conjunto todavía no es visible.

¿Fue útil?

Solución

Su comando regasm destruyó las claves del registro para el servidor COM. Vas a tener que volver a instalarlo. Sólo use regasm en su propio código [ComVisible].

Una de las razones es posible que tenga problemas para usar el componente, más allá de ella no sólo se haya instalado correctamente, se debe a que usted está tratando de ejecutar esto en un sistema operativo de 64 bits. Y el componente es de 32 bits, con mucho, el caso más común. Es necesario para forzar su aplicación para ejecutarse en modo de 32 bits para poder utilizarlo. En el IDE VB.NET, que se hace con el Proyecto + Propiedades, ficha compilar, busca a continuación, Opciones de compilación avanzadas, Establecer destino a la CPU "x 86".

La herramienta definitiva para la solución de problemas problemas de este tipo es la utilidad ProcMon SysInternals'. Se le muestra cómo COM está utilizando la Classes \ CLSID clave HKLM \ Software \ para buscar el archivo DLL de carga.

Otros consejos

Usted está registrando la interoperabilidad, pero (como sugiere el mensaje de error) no se haya registrado el DLL COM. Prueba esto:

regsvr32 pdcclient.dll
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top