Encontrando DLL faltante para error 0xc00007b

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
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.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

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.

Dejar un comentario