Код C выполняется только при запуске программы из терминала

#c #ogre

#c #ogre

Вопрос:

У меня странная ошибка, которая, похоже, возникает только тогда, когда программа выполняется не с терминала. Вот мой проект:https://github.com/elliotpotts/Troll /
https://github.com/elliotpotts/Troll/issues/2

Посмотрите на функцию Troll::State::keyPressed(). По какой-то причине, когда я запускаю программу с терминала, все в порядке, и приложение существует, но когда я запускаю его как программу с графическим интерфейсом, приложение не завершается. Я не могу понять, почему. Заранее спасибо, ell.

РЕДАКТИРОВАТЬ: Приношу извинения за то, что не добавил тег Ogre и не опубликовал нажатую функцию, вот она:

 void Troll::State::keyPressed(const OIS::KeyEventamp; event){
    if(event.key == OIS::KC_Q) {
        mCreator->stop();
    };
};
  

Я также попытался добавить вывод файла для его тестирования:

 void Troll::State::keyPressed(const OIS::KeyEventamp; event){
    std::cout << "Q was pressed" << std::endl;
    std::fstream file("log");
    file << "Q was pressed";
    file.close();
    if(event.key == OIS::KC_Q) {
        mCreator->stop();
    };
};
  

При запуске с терминала это работает, в противном случае — нет. Дополнительное примечание: на данный момент у меня нет функционирующего отладчика, который я также пытаюсь исправить. Элл.

Комментарии:

1. Извините, ничем не могу помочь, но, возможно, добавление тега ogre может привлечь внимание нужных людей.

2. Не могли бы вы скопировать / вставить keyPressed() определение сюда?

3. Возможно, у платформы GUI есть свой собственный обработчик KeyEvent, который получает ключ?

4. Какой графический интерфейс вы используете? И как вы уведомляете о нажатиях клавиш?

5. Я не использую фреймворк GUI, только систему ввода. Но недавно я обнаружил, что проблема вызвана моей IDE. Должен ли я указать это в ответе и пометить его как правильный?

Ответ №1:

Оказывается, проблема была в IDE, в любом случае спасибо за вашу помощь, ell 🙂