Pessoal, tenho uma pequena janela em GTK no C++. A Janela foi feita dentro de uma classe e chamada no arquivo principal do projeto. O problema acontece após a chamada da classe, onde comandos próprios do C++ não são executados. O que fazer?
main.cpp:
#include <iostream>
#include "janela.h"
using namespace std;
int main(int argc, char *argv[]){
cout << "Janela" << endl; //Isso aparece nno terminal
Janela janela(argc, argv);
cout << "Programa" << endl; //Isso não
return 0;
}
Quando vc chama gtk_main() o programa inicia o loop interno do GTK e esse loop não termina a menos que vc faça isso explicitamente.
Mesmo que vc clique no botão fechar o loop não encerra, pois o comportamento padrão deste botão é apenas esconder a janela e manter gtk_main() rodando.
O que vc deve fazer é modificar este comportamento. Tente isso:
Complementando a explicação do camarada acima, utilizando Gtkmm, você pode solucionar o problema utilizando std::cerr ao invés de std::cout. Óbvio que isso só te ajuda, se tua única necessidade for jogar uma saída direto pro terminal. Se você quiser descobrir mais do porque do std::cerr funcionar e o std::cout não, basta ler a documentação de ambos.