2010-03-10 10 views
5

¿Una excepción System.Runtime.InteropServices.COM de 0x80040154 siempre significa que la clase no está registrada? Recibo una COMException que dice "Error al recuperar la fábrica de la clase COM para el componente con CLSID {29131539-2EED-1069-BF5D-00DD011186B7} debido al siguiente error: 80040154." Está intentando cargar Interop.Domino.dll, que es una referencia que obtuve de la pestaña COM de Agregar referencia llamada "Objetos de Lotus Domino" que apunta a domobj.tlb en la carpeta del programa de Notes.¿Es una COMException de 0x80040154 siempre 'Clase no registrada'?

Escribí el código años atrás, es lo único que he hecho con la interoperabilidad y es justo decir que nunca llegué a comprenderlo.

Veo este error nuevamente después de mover el código a un servidor 2008 R2 (entonces es x64). Fue escrito en XP y se ejecuta en 2003 (ambos x86). Para diagnosticar el problema, construí una caja Win7 x86 (porque no hay R2 x86) y funcionó. También construí una caja de 2003 x64 y falla con el mismo error, por lo que parece que se debe a la adopción de la arquitectura x64. ¿Hay algo que debería hacer al hacer interoperabilidad para obtener DLL COM x86 para trabajar en máquinas x64?

Respuesta

4

que tenía el mismo problema tratando de construir y ejecutar una aplicación .NET en Windows 7 x64 que llama interop.domino.dll, que es 32 solo bit

Para resolver, volví a compilar la aplicación .NET para ejecutar específicamente como x86 cuando se ejecuta en sistemas operativos x64.

Estaba usando Visual Studio 2010 Express Edition, que es más complicado de orientar específicamente para las plataformas x86 que las versiones pagas.

La solución fue:

  1. haga clic en Herramientas> Opciones> proyectos y soluciones
  2. marcar la casilla "Mostrar avanzó crear configuraciones" y haga clic en OK
  3. haga clic en Herramientas> Configuración> Configuración de verificación experto para ver el administrador de configuración de generación
  4. Haga clic en BUILD> CONFIGURATION MANAGER seleccione la plataforma desplegable en X86 y haga clic en CLOSE
  5. Ahora reconstruya el proyecto
2

Hay una nota técnica de IBM que indica que las clases COM de Domino no son compatibles con un sistema operativo de 64 bits. Ver https://www-304.ibm.com/support/docview.wss?uid=swg21454291 Así que parece que incluso compilando el código para ejecutar como x86 (según la respuesta de mpownie), aún corre riesgos.

Cuestiones relacionadas