Sida 1 av 1

Försöker skriva ett program med C++ och gtkmm, behöver hjälp

Postat: 24 mar 2008, 13:02
av lord
Hejsan.

Försöker skapa ett GUI baserat program via gtkmm. För detta använder jag gedit och terminalen. Fast jag får en del felmeddelanden när jag försöker kompilera programmet:

Kod: Markera allt

mainWindow.cc:3: error: ‘MainWindow’ has not been declared
mainWindow.cc:3: error: ISO C++ forbids declaration of ‘MainWindow’ with no type
mainWindow.cc: In function ‘int MainWindow()’:
mainWindow.cc:6: error: ‘set_title’ was not declared in this scope
mainWindow.cc:7: error: ‘set_size_request’ was not declared in this scope
mainWindow.cc:10: error: ‘set_border_width’ was not declared in this scope
mainWindow.cc:12: error: ‘m_Frame’ was not declared in this scope
mainWindow.cc:12: error: ‘add’ was not declared in this scope
mainWindow.cc:23: error: ‘show_all_children’ was not declared in this scope
mainWindow.cc: At global scope:
mainWindow.cc:26: error: expected constructor, destructor, or type conversion before ‘::’ token
main.cc: In function ‘int main(int, char**)’:
main.cc:10: error: expected `;' before ‘win’
main.cc:10: warning: statement is a reference, not call, to function ‘MainWindow’
main.cc:11: error: ‘win’ was not declared in this scope
Och här är koden för main.cc:

Kod: Markera allt

#include <gtkmm/main.h>
#include "mainWindow.h"

using namespace std;

int main(int argc, char *argv[])
{
    Gtk::Main kit(argc, argv);

    MainWindow win;
    Gtk::Main::run( win );

    return 0;
}
Koden för mainWindow.cc:

Kod: Markera allt

#include "mainWindow.h"

MainWindow::MainWindow()
{
  /* Set some window properties */
  set_title("Contact Explorer");
  set_size_request(300, 300);

  /* Sets the border width of the window. */
  set_border_width(10);

  add(m_Frame);

  /* Set the frames label */
  m_Frame.set_label("Container");

  /* Align the label at the right of the frame */
  //m_Frame.set_label_align(Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP);

  /* Set the style of the frame */
  m_Frame.set_shadow_type(Gtk::SHADOW_ETCHED_OUT);

  show_all_children();
}

MainWindow::~MainWindow()
{
}
Koden för mainWindow.h:

Kod: Markera allt

#ifndef MAINWINDOW
#define MAINWINDOW

#include <gtkmm.h>
#include "mainWindow.cc"

class MainWindow : public Gtk::Window
{
public:
  MainWindow();
  ~MainWindow();

protected:
  //Child widgets:
  Gtk::Frame m_Frame;
};

#endif //MAINWINDOW
Jag vet inte vad problemet är. Är det någon som ser problemet? Hur får jag min kod att fungera?

Bästa hälsningar,
lord.

Koden kommer från följande tutorial:
http://www.gtkmm.org/docs/gtkmm-2.4/doc ... dgets.html

Re: Försöker skriva ett program med C++ och gtkmm, behöver hjälp

Postat: 24 mar 2008, 14:28
av Lars
Du ska inte inkludera mainWindow.cc från mainWindow.h, utan bara tvärtom.

Re: Försöker skriva ett program med C++ och gtkmm, behöver hjälp

Postat: 24 mar 2008, 16:11
av lord
Ok, det tog bort en hel del av felmeddelanderna. Nu har jag dessa istället:

Kod: Markera allt

/tmp/ccieOAYc.o: In function `main':
main.cc:(.text+0x251): undefined reference to `MainWindow::MainWindow()'
main.cc:(.text+0x26e): undefined reference to `MainWindow::~MainWindow()'
main.cc:(.text+0x281): undefined reference to `MainWindow::~MainWindow()'
collect2: ld returned 1 exit status
How do I solve this?

Re: Försöker skriva ett program med C++ och gtkmm, behöver hjälp

Postat: 24 mar 2008, 17:18
av gusnan
Hur bygger du projektet? Det ser ut som om du inte länkar mainWindow.cc.