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.
Este error se da porque una dependencia cargada en tiempo de ejecución no pudo ser cargada. Algunas razones son:
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.
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.
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.
Por cierto, agradezco a Martin C., Fer y Paco por prestarme sus computadoras para poder probar y comprobar que el error ya estaba solucionado.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.