2008-12-03 8 views
8

Así que estoy tratando de ejecutar mi primer programa hello world escrito en C. Lo compilé en eclipse y no recibí errores, pero cuando intento ejecutarlo obtengo:Cygwin1.dll 'no encontrado' cuando se ejecuta un programa escrito en C. ¿Cómo puedo hacer que Windows lo encuentre?

"Esta aplicación no se ha podido iniciar porque cygwin1.dll no se encontró ".

Encontré this post lo que parece indicar que debería agregarlo a Windows PATH, y usé this para hacer eso. Así que ahora "Ruta" en mis variables de entorno tiene "; C: \ cygwin \ bin \ cygwin1.dll" adjuntado al final. Todavía no funciona. ¿Alguien tiene una pista de lo que podría estar haciendo mal? Mi 'programa' sólo se parece a esto: variable de entorno

#include <stdio.h> 

main() 
{ 
    printf("hello, world\n"); 
} 

Respuesta

17

La ruta debe incluir el directorio que contiene cygwin1.dll, no el camino a cygwin1.dll sí. Así que solo asegúrese de que PATH tenga la cadena "C:\cygwin\bin" en ella.

+0

Jaja, probé C: \ cygwin pero no se me ocurrió hacer C: \ cygwin \ bin. Funciona. Gracias. Ahora solo necesito descubrir cómo hacer que la ventana permanezca el tiempo suficiente para ver la salida. : D –

+1

Ejecútelo desde la línea de comandos: ejecute cmd.exe (o, mejor aún, simplemente ejecute Cygwin), navegue al directorio del ejecutable y ejecute el ejecutable desde la línea de comandos. –

+2

O poner en una lectura después de imprimirf. – EBGreen

15

Por cierto, I implore no debe agregar ciegamente un directorio que contiene cygwin1.dll al sistema PATH. La ruta se busca secuencialmente. Si tiene versiones antiguas o más recientes del tiempo de ejecución de Cygwin en la ruta, otros programas vinculados contra cygwin1.dll podrían romperse horriblemente (y no es trivial averiguar qué sucedió a menos que sepa que está buscando una versión de DLL diferente .)

Lo que debe hacer es copiar cygwin1.dll (y otras DLL de Cygwin que su programa pueda necesitar) en el directorio que contiene su binario y luego crear un archivo vacío (cero bytes) con el mismo nombre que su ejecutable pero con .local anexado, es decir, si su ejecutable es mytest.exe, crea un archivo llamado mytest.exe.local. Eso le dirá al cargador de archivos PE al primero busque los archivos DLL necesarios en el mismo directorio que contiene el archivo binario, evitando así muchos dolores de cabeza más adelante.

0

Tuve el mismo problema ... la respuesta de Adam Rosenfield lo resolvió bien. En mi computadora, la ruta debe ser "C:\cygwin64\bin"

La primera vez que no reconocí que mi versión de cygwin es la de 64 bits ... Pero está claro que esta pequeña diferencia en la variable de ruta decide si funcionará - o no.

Cuestiones relacionadas