2011-12-14 2 views
0

Я написал и скомпилировал программу в c, используя gcc через cygwin, и все работает отлично, когда я запускаю программу из командной строки; однако, когда я дважды нажимаю исполняемый файл, окно командной строки кратковременно мигает на экране, но ничего не происходит. Любые идеи, почему это может быть? Я использую Windows 7.Исполняемый файл запускается с двойным щелчком

+0

Может ли он найти библиотеки, в которых он нуждается? Возможно, сделайте файл bat, чтобы запустить его из правильного местоположения. – Bashwork

+0

@Bashwork работает из одного и того же местоположения в любом случае ... – Daniel

+0

Я не знал, скопировали ли вы исполняемый файл в другое место. – Bashwork

ответ

0

Это графическое приложение? Если нет, он не получает ввода, поэтому он, вероятно, начинается, видя EOF (если он вообще проверяет ввод), а затем заканчивает. Когда это будет завершено, окно терминала будет автоматически закрыто.

2

Cygwin требует, чтобы cygwin.dll находился в PATH при выполнении файлов, скомпилированных для этой среды. Когда вы компилируете что-то с cygwin, вы компилируете для cygwin.

Я бы рекомендовал вместо этого использовать MinGW, если вы планируете создавать программы. Когда вы компилируете что-то с mingw, вы компилируете для окон.

+1

Вы можете узнать, если это проблема, пытаясь запустить вашу программу из обычной командной строки (а не cygwin) и проверки на наличие ошибок. – nobsid

+0

Но у меня есть 'cygwin.dll' на пути, так что в чем проблема? – Daniel

+0

Он работает, когда я запускаю из обычной командной строки – Daniel

1

Например, у вас есть программа, которая печатает «Hello World!». к командной строке. Он напечатает «Hello World!» если он открыт из cmd, но если вы дважды щелкните по нему, он распечатает его и немедленно закроет окно.

Попробуйте getch(), чтобы предотвратить его. Он напечатает «Нажмите любую клавишу, чтобы продолжить».

+0

Мне не важно, если окно немедленно закрыто. Все, о чем я забочусь, это результат программы. – Daniel

1

При компиляции программ внутри cygwin он свяжет их с динамической библиотекой cygwin.dll. Если этот файл не находится в вашей переменной PATH, ваши программы не будут запускаться вне cygwin. Итак, найдите cygwin.dll и добавьте этот каталог в переменную системы PATH.

Смежные вопросы