Go y Golang

Solución al error 0xc00007b en Windows

Hoy vamos a hablar sobre un error que me trajo muchos problemas en las últimas horas. Se trata del error 0xc00007b y ocurría al usar mi plugin para impresoras térmicas versión 3.

Por ello es que en este post te mostraré la causa y la posible solución de ese problema, ya sea para mi plugin o para cualquier otro programa que intentes usar.

Solo para que quede claro, el error de mi plugin ya está arreglado, pero quiero documentar esto por si a alguien más se le presenta esto en el futuro.

Error 0xc00007b

Este error se da porque una dependencia cargada en tiempo de ejecución no pudo ser cargada. Algunas razones son:

  • No existe un DLL o dependencia que el programa necesita (por ello es que a veces se recomienda reinstalar el programa)
  • Existe la DLL, pero es para 32 bits y quiere ser cargada por un programa de 64 bits, o viceversa.

Explicado con palabras simples, puede que el programa necesite una DLL de 64 bits pero estés usando un Sistema operativo de 32 bits, o viceversa. También puede que simplemente no hayas instalado la DLL o que no se encuentre junto al programa.

Solución

La solución es buscar la dependencia faltante y asegurarnos de que es la que corresponde a nuestra arquitectura.

A veces cuando nos falta una DLL lo primero que hacemos es buscar en internet, y aunque sí existen, no son para nuestra plataforma.

Por ello es que hay que averiguar si tenemos un sistema de 32 o 64 bits y buscar o descargar programas específicamente para esa arquitectura.

Mi problema y solución

Como comenté al inicio, el problema aparecía cuando los usuarios descargaban mi plugin.

Primero les pedía la DLL, la libiconv-2.dll específicamente. Entonces la descargaban y renombraban, pero como en internet solo está la de 32 bits (o al menos en los sitios que yo busqué) ahora les daba el error 0xc00007b.

Lo peor es que yo no podía diagnosticar el problema porque a mí no me aparecía ese error (ya sabes, en mi computadora funciona bien). Gracias a unos usuarios pude comenzar a buscar y encontré la siguiente pregunta en StackOverflow: https://stackoverflow.com/questions/10492037/the-application-was-unable-to-start-correctly-0xc000007b

Ahí no estaba mi solución, pero alguien dijo:

I tried all the things specified here and found yet another answer. I had to compile my application with 32-bit DLLs. I had built the libraries both in 32-bit and 64-bit but had my PATH set to 64-bit libraries. After I recompiled my application (with a number of changes in my code as well) I got this dreaded error and struggled for two days. Finally, after trying a number of other things, I changed my PATH to have the 32-bit DLLs before the 64-bit DLLs (they have the same names). And it worked. I am just adding it here for completeness.

Y recordé que había buscado la DLL en mi sistema en todos los lugares posibles… en System32, en SysWOW64, la GOPATH y varias rutas excepto en una: la de MinGW. Lo de 32 y 64 bits me trajo ese recuerdo ya que necesitaba el compilador GCC de 64 bits y no se me había ocurrido buscar ahí.

Entonces fui a donde está mi instalación de MinGW de 64 bits y al buscar ahí estaba la DLL, específicamente en C:\msys64\mingw64\bin.

Al hacerle un file me dijo que la librería es para 64 bits. Entonces lo que hice fue distribuir esa DLL junto con mi plugin, y problema arreglado.

Encontrando DLL faltante para error 0xc00007b

Por cierto, agradezco a Martin C., Fer y Paco por prestarme sus computadoras para poder probar y comprobar que el error ya estaba solucionado.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.