Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

PRB: Error 430 en tiempo de ejecución en el cliente después de cambiar el tipo de servidor

Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Cuando el tipo de proyecto de un servidor ActiveX se cambia de DLL a EXE y vuelve a compilarse, cualquier código de cliente que intente crear una instancia de un objeto a partir del servidor genera el error siguiente:
"Error en tiempo de ejecución '430': Esta clase no admite automatización o no admite
la interfaz esperada."
Causa
El error es el resultado de la compatibilidad del proyecto y el cambio del tipo de proyecto de DLL a EXE. En la compatibilidad del proyecto, Visual Basic conserva el identificador de clase (CLSID) de la clase pero no el identificador de interfaz (IID). Dado que se conserva el CLSID, la clase termina registrándose en dos servidores: el servidor en proceso (DLL) y el servidor local (EXE). Cuando crea una instancia de la clase a partir de un cliente, se elige la clase de la DLL. Dado que la clase de la DLL no admite el nuevo IID, se produce el error anterior.
Solución
Para eliminar este error, use la utilidad RegSvr32.EXE para eliminar del Registro el servidor de DLL anterior y volver a incluir en el Registro el nuevo servidor EXE.
Estado
Microsoft está investigando este problema y publicará nueva información aquí, en Microsoft Knowledge Base, cuando esté disponible.
Más información

Pasos para reproducir este comportamiento

  1. Crear un nuevo proyecto de DLL de ActiveX en Visual Basic. Se creará Class1 de manera predeterminada.
  2. Seleccione Project1 en el Explorador de proyectos y presione la tecla F4 para que aparezca la ventana Propiedades. En la ventana Propiedades, cambie el valor de (Nombre) a "Server".
  3. Pegue el código siguiente en Class1:
          Public Test As Collection 						
  4. Compile la DLL seleccionando Generar Server.dll en el menú Archivo.
  5. Inicie otra instancia de Visual Basic y cree un nuevo proyecto EXE estándar. De forma predeterminada, se crea Form1.
  6. Seleccione Referencias en el menú Proyecto y realice una referencia a Server.
  7. Pegue el código siguiente en Form1:
          Private Sub Form_Load()         Dim x as Server.Class1         set x = new Server.Class1      End Sub						
  8. Presione la tecla F5 para ejecutar el proyecto. No se genera ningún error.
  9. Vuelva al proyecto Server. Seleccione Propiedades de Server en el menú Proyecto. Seleccione la ficha General y cambie el tipo de proyecto a EXE de ActiveX.
  10. Vuelva a compilar el proyecto seleccionando Server.EXE en el menú Archivo.
  11. Vuelva a la instancia del cliente de Visual Basic. Seleccione Referencias en el menú Proyecto. Quitar la referencia a Server.dll y comprobar Server.EXE
  12. Presione la tecla F5 para ejecutar el proyecto y observe que se produce el error siguiente:
    "Error en tiempo de ejecución '430': Esta clase no admite automatización o no admite
    la interfaz esperada."
kbdss kbDSupport kbVBp kbVBp600 kbCompiler kberrmsg
Propiedades

Id. de artículo: 193172 - Última revisión: 12/05/2015 09:20:40 - Revisión: 3.0

Microsoft Visual Basic 6.0 Edición de aprendizaje, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 6.0 Edición empresarial

  • kbnosurvey kbarchive kbprb KB193172
Comentarios