Error al usar una DLL de COM (ActiveX) en Windows 8 (x64)

 

Pues eso… que estaba yo actualizando al Visual Studio 2012 una aplicación que hace un par de años me funcionaba en Windows 7 con Visual Studio 2010 y en el que utilizo un componente ActiveX (COM) creado con Visual Basic 6.0. Pero a la hora de usarlo me da este error:
Retrieving the COM class factory for component with CLSID {6366501A-4960-4E2D-8E09-00F022ACD30E} failed due to the following error: 80040154.

Y después de varias búsquedas en google y desechar las que indican que hay que registrar el OCX/DLL con permisos de administrador (eso ya lo sabía yo desde Windows Vista, jeje) y ver que lo único "medio válido" es un comentario de que compile la DLL a 64 bits, me digo yo a mi mismo (algunas veces hablo con mi otro yo) ¿y si es cosa de que debe estar en modo x86?

Así que, me voy al Visual Studio 2012 (en realidad no es que me vaya, está algo complicado de que me pueda meter yo por la pantalla… si no que centre mi atención en el VS) y cambio en la ficha de Compilación (Compile) que en vez de AnyCPU sea x86, el cambio lo hago en los tres proyectos que utiliza lo que estoy mirando (aunque creo que sólo sería necesario en el ejecutable no en las 2 dll, pero por si las flais, lo cambio en todos).

¡Y funciona!

 

Así que… aquí estoy contándotelo por si alguna vez te pasa (o me vuelve a pasar a mí y no me acuerdo del tema…)

 

Espero que te sea de utilidad y acuérdate de "donar" algo… que si no… ¡que malamente está la vida! ¡ay! en fin…

 

Nos vemos.
Guillermo

11 comentarios en “Error al usar una DLL de COM (ActiveX) en Windows 8 (x64)

  1. rodolfolp

    Hola, Estoy haciendo un programa en vb6, para windows 7, el problema es que en las consulas de SQL a una base de datos access, no me la ejecuta. exactamente es una consulta de fechas. Me podria ayudar ?. Gracias

    Responder
  2. Golden

    Nací en el 62…

    Es la primera vez que contacto contigo, creo recordar.
    Pero he visto tu trabajo a lo largo de… la evolución de la informática, y la verdad que me ha dado siempre envidia de lo que has hecho.
    Desde luego que todo a evolucionado mucho, pero creo que siempre has enseñado porque te gustaba enseñar, y te has metido en todo tipo de proyectos y lenguajes de programación, enseñando de forma desinteresada (los tiempos se imponen y las crisis también), así que, siento admiración por tu trabajo, desde tus comienzos.

    Espero que de alguna manera te haya sido recompensada tanta labor comunicativa, seguro que si.

    Pues ahora no puedo hacerte la pregunta, porque va a parecer que lo anterior era para tener mejor respuesta…
    Bueno, pues en otro momento.

    Gracias, por estar ahí.

    Responder
  3. Golden34

    (Siento la falta de la h en «ha evolucionado», un desliz que me amarga)

    En fin, al grano, tenemos una aplicación VB6 que da «error runtime 216» al intentar ejecutarse en máquinas de 64 bits, tiene Crystal Reports de la época… y otras dlls de distintos fabricantes también de la época (2005).
    Lo buscado por ahí da: Renuévate porque VB6 no funciona en 64 bits, ni hay soporte.

    Lo que comentas es para VStudio, pero para VB6 no veo opción similar, tampoco son Dlls, generamos exes.

    ¿Alguna posible solución?
    Seguramente, el error lo dan esas dlls foráneas y no se pueda hacer nada, pero si sabes alguna cosa… cuenta.
    Gracias.

    Responder
  4. elGuille

    Hola,
    ¡al final has hecho la consulta! jejeje
    no suelo responder consultas, (para eso están los foros públicos), pero como el tema que comentas está dentro del contenido del post… te daré un consejo a ver si…
    Lo primero que he hecho es buscar ese error, y entre otras cosas me encuentro esto:
    http://support.microsoft.com/kb/259279
    que dice que puede ser un virus…

    Aparte de eso, si sabes qué DLLs usa tu EXE puedes copiarlas en el mismo directorio del ejecutable (para asegurarte que use las de 32 bits) y así es posible…

    ¡Suerte! y ya contarás si lo resuelves.
    Gracias.

    Responder
  5. juan

    hola, tengo una aplicación de visual studio 6.0, mi sistema operativo es win 8 de 64 bits, cuando ejecuto el SENDKEYS desde visual 6.0 me marca error 70 acceso denegado, pero si compilo y ejecuto el ejecutable este no me marca error, tendrá solución?
    también si tengo una dll registrada que es para un proyecto, luego quito la dll y registro una igual con el mismo nombre pero diferente versión, me sigue conservando la primera, agradeceré su atencion

    Responder
  6. elGuille Autor

    Hola juan, mejor haz la pregunta en los foros públicos y si al decir «visual 6.0» te refieres a Visual Basic 6.0, mejor que lo digas de esta segunda forma.
    En cualquier caso, me extraña que te funcione el Visual Basic / Visual Studio 6.0 en Windows 8 de 64 bits… creo que a algunos le interesará saber cómo has hecho la instalación porque creo que desde Windows Vista que no dejaba instalarlo… 🙁

    Responder
  7. juan

    hola gracias por contestar, si me refiero a visual studio 6.0, de hecho dure 2 años trabajándolo en Windows 7 también, pero he cambiado a Windows 8 lo tengo instalado pero el problema que me pasa es ese, que si tengo 2 dll con el mismo nombre pero diferente versión no me lo permite, en Windows 7 si podía hacerlo, pondré aquí como lo instale en Windows 7

    Responder
  8. elGuille Autor

    no sé… te repito que mejor preguntes en los foros públicos… y lo de que en W7 te permitiera 2 dll con el mismo nombre y versiones diferentes… en el mismo directorio no creo…
    Lo dicho… por favor, pregunta en los foros públicos y explica bien los detalles… yo con todo lo que has dicho aún estoy perdido (como decía el robot aquél (#5): ¡necesito más datos, más datos!
    (pero no es que yo te los pida, los datos, si no, que me quedo así como que no me entero… ¡es igual!
    Gracias por confiar y espero que te lo resuelvan!

    Responder

Responder a Golden34 Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *