[C++/gtkmm] Fehler bei sauberem Code

counterroot

Lt. Commander
Registriert
Feb. 2005
Beiträge
1.633
hiho!

ich habe folgende dateien (vom original gtkmm.org-tutorial):
examplewindow.h
Code:
#ifndef GTKMM_EXAMPLEWINDOW_H
#define GTKMM_EXAMPLEWINDOW_H

#include <gtkmm.h>

class ExampleWindow : public Gtk::Window
{
public:
  ExampleWindow();
  virtual ~ExampleWindow();

protected:

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

#endif //GTKMM_EXAMPLEWINDOW_H


main.cc
Code:
#include <gtkmm/main.h>
#include "examplewindow.h"

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

  ExampleWindow window;
  //Shows the window and returns when it is closed.
  Gtk::Main::run(window);

  return 0;
}

examplewindow.cc
Code:
#include "examplewindow.h"

ExampleWindow::ExampleWindow()
{
 /* Set some window properties */
  set_title("Frame Example");
  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("Gtk::Frame Widget");

  /* 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();
}

ExampleWindow::~ExampleWindow()
{
}

wenn ich das ganze mit dem Befehl kompiliere:
Code:
g++ main.cc -o main `pkg-config gtkmm-2.4 --cflags --libs`

bekomme ich folgende Fehlermeldungen:
Code:
In file included from main.cc:2:
examplewindow.h:18:31: warning: no newline at end of file
main.cc:13:2: warning: no newline at end of file
/tmp/ccUvq8Lg.o: In function `main':
main.cc:(.text+0x251): undefined reference to `ExampleWindow::ExampleWindow()'
main.cc:(.text+0x26e): undefined reference to `ExampleWindow::~ExampleWindow()'
main.cc:(.text+0x281): undefined reference to `ExampleWindow::~ExampleWindow()'
collect2: ld gab 1 als Ende-Status zurück

Wenn ich das hier eingebe
Code:
g++ examplewindow.cc -o main `pkg-config gtkmm-2.4 --cflags --libs`

bekomme ich folgende Fehlermeldungen:
Code:
In file included from examplewindow.cc:1:
examplewindow.h:18:31: warning: no newline at end of file
examplewindow.cc:28:2: warning: no newline at end of file
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld gab 1 als Ende-Status zurück

Wo liegt der Fehler? Kann mir da jemand bitte weiterhelfen?
 
Zuletzt bearbeitet:
Naja der Fehler mit dem Newline steht ja da. Einfach ein Newline an's Dateiende bei den angemeckerten Dateien setzen.

Ansonsten *grübel* Ich sollte nicht immer nur den Makesupport benutzen :)

Du musst die zwei Objects einzeln kompilieren ohne den ld anzuwerfen und die dann mit einem g++ Aufruf zusammenlinken. Genaue Syntax weiß ich leider nicht. Da können dir sicher ein paar Linux/Make-Gurus weiterhelfen.

Wenn mich nicht alles täuscht, probier mal:
Code:
g++ main.cc examplewindow.cc -o main `pkg-config gtkmm-2.4 --cflags --libs`

Google sagte noch das hier:
http://gcc.gnu.org/ml/gcc-help/2005-03/msg00152.html
 
Zuletzt bearbeitet:
Zurück
Oben