Probleme mit Cairomm unter Windows
-
Das Beispielprogramm aus der GTKmm Dokumentation unten kompiliert bei mir nicht, weil der Compiler die
Include Datei "cairomm/context.h" nicht finden kann. Muss man das Cairomm extra installieren? Ich
arbeite unter Windows XP mit MinGW mit "gtkmm-devel-2.8.8-2" und "gtk-win32-devel-2.8.18-rc1" von
http://gladewin32.sourceforge.net und http://www.pcpm.ucl.ac.be/~gustin/win32_ports/. Als zusätzliche
Compiler Flags nutze ich "pkg-config --cflags --libs gtkmm-2.4".#include <gtkmm/drawingarea.h> #include <gtkmm/main.h> #include <gtkmm/window.h> #include <cairomm/context.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_expose_event(GdkEventExpose* event); }; MyArea::MyArea() { } MyArea::~MyArea() { } bool MyArea::on_expose_event(GdkEventExpose* event) { // This is where we draw on the window Glib::RefPtr<Gdk::Window> window = get_window(); if(window) { Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); // coordinates for the center of the window int xc, yc; xc = width / 2; yc = height / 2; Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context(); cr->set_line_width(10.0); // clip to the area indicated by the expose event so that we only redraw // the portion of the window that needs to be redrawn cr->rectangle(event->area.x, event->area.y, event->area.width, event->area.height); cr->clip(); // draw red lines out from the center of the window cr->set_source_rgb(0.8, 0.0, 0.0); cr->move_to(0, 0); cr->line_to(xc, yc); cr->line_to(0, height); cr->move_to(xc, yc); cr->line_to(width, yc); cr->stroke(); } return true; } int main(int argc, char** argv) { Gtk::Main kit(argc, argv); Gtk::Window win; win.set_title("DrawingArea"); MyArea area; win.add(area); area.show(); Gtk::Main::run(win); return 0; }
-
Gast1 schrieb:
Das Beispielprogramm aus der GTKmm Dokumentation unten kompiliert bei mir nicht, weil der Compiler die
Include Datei "cairomm/context.h" nicht finden kann. Muss man das Cairomm extra installieren?Wie wäre es, wenn du nachschaust, ob du die Datei cairomm/context.h auf deinem PC findest. Wenn nicht, dann must du Cairo wohl extra installieren.
-
Hallo,
du hast nur das gtkmm-Paket installiert, jedoch fehlt dir Cairo(mm) noch zum Glück
nachinstallieren.
MfG
GPC
-
Danke, aber Cairo müsste laut http://cairographics.org/download eigentlich schon installiert sein:
Since GTK+ 2.8 and newer depends on Cairo, you can have Cairo installed on Win32 as a side-effect of installing GTK+. For example, see The Glade/GTK+ for Windows Toolkit.
Gibt es das Cairomm auch als Windows Port, und wenn ja, wo? Ich finde das mit google leider nicht. Wäre nett, wenn ihr mir da weiterhelfen könntet!
-
Hm, scheint so. Hast du inzwischen nachgeschaut, ob Cairo installiert wurde (check die Quellcodes und die DLLs beim restlichen gtk+ bzw. gtkmm Zeug)?
Cairo(mm) als Win-Port gibt's:
Go to Tor Lillqvist's GTK+ for Windows page.
You want "cairo-1.0.4.zip", the binary distribution at "libpng 1.2.8", and "Zlib 1.2.3" (you can search on those strings to find them in the page). That should be it. Just pop libcairo-2.dll, libpng13.dll and zlib1.dll into your working directory or system PATH, and away you go!
That gives you the base cairo functions, the PNG functions, and the Win32 functions.
Ich nehme an, normale gtkmm Programme ohne cairomm funktionieren?
MfG
GPC
-
Hm, scheint so. Hast du inzwischen nachgeschaut, ob Cairo installiert wurde (check die Quellcodes und die DLLs beim restlichen gtk+ bzw. gtkmm Zeug)?
Die Header Dateien und Libs für das "normale" Cairo sind alle installiert, nur das Cairomm fehlt.
You want "cairo-1.0.4.zip", the binary distribution at "libpng 1.2.8", and "Zlib 1.2.3" (you can search on those strings to find them in the page). That should be it. Just pop libcairo-2.dll, libpng13.dll and zlib1.dll into your working directory or system PATH, and away you go!
That gives you the base cairo functions, the PNG functions, and the Win32 functions.
Hab ich mir heruntergeladen, aber da sind nur die Cairo Dateien ohne das C++ Binding drin, die schon installiert sind.
Ich nehme an, normale gtkmm Programme ohne cairomm funktionieren?
Ja, normale GTKmm Programme kompilieren problemlos, soagar libglademm funktioniert. Falls es das Cairomm wirklich nicht für Windows geben sollte: kann man das "C-Cairo" einigermaßen elegant mit GTKmm verwenden?
Noch ne andere Frage: Hat eigentlich schon jemand den C++ Codegenerator für Glade (glade--) unter Windows zum laufen gebracht? Bei mir stürzt das immer mit einem "segmentation fault" (wg. Nullpointer) ab, sobald man versucht, aus einer Glade Datei Code zu erstellen (glade-- file.glade). In der Readme steht, man darf keine Dateien verwenden, die in Verzeichnissen mit Leerzeichen liegen, aber auch auf
der untersten Ebene des Verzeichnisbaums (c:) stürzt glade-- ab.
-
Gast1 schrieb:
Ich nehme an, normale gtkmm Programme ohne cairomm funktionieren?
Ja, normale GTKmm Programme kompilieren problemlos, soagar libglademm funktioniert. Falls es das Cairomm wirklich nicht für Windows geben sollte: kann man das "C-Cairo" einigermaßen elegant mit GTKmm verwenden?
Kann man... nur elegant ist es nicht wirklich, da man zwei Abstraktionsebenen im Code hat. Du könntest dir cairomm auch selber kompilieren (braucht den MinGW). Aber ich schätze, das fällt aus, oder?
Noch ne andere Frage: Hat eigentlich schon jemand den C++ Codegenerator für Glade (glade--) unter Windows zum laufen gebracht? Bei mir stürzt das immer mit einem "segmentation fault" (wg. Nullpointer) ab, sobald man versucht, aus einer Glade Datei Code zu erstellen (glade-- file.glade). In der Readme steht, man darf keine Dateien verwenden, die in Verzeichnissen mit Leerzeichen liegen, aber auch auf
der untersten Ebene des Verzeichnisbaums (c:) stürzt glade-- ab.Hm, kann ich nichts zu sagen, ich benutze weder glade noch Window...
GPC
-
Nabend,
cairomm kannst du hier: http://cairographics.org/cairomm runterladen. Du musst es
dir allerdings selbst bauen.Ich habs mir mal grad runtergeladen, allerdings werden in cairomm Konstanten
benutzt, die in meiner cairo-Version nicht definiert sind, was ich sehr merkwuerdig
finde. Ich schaue spaeter nochmal danach, jetzt geh ich mich erstmal hinlegen ;).gruss
v R
-
Ok, hab doch nochmal nachgeschaut. Die bei GTK+ mitgelieferte cairo-Version ist
die Version 1.0.2. Die fuer cairomm notwendige Version (ich hab von cairomm
derzeit nur die letzte heruntergeladen, wollte jetzt nicht auf die Suche gehen),
ist Version 1.2.4. Welche cairomm-Version die richtige ist, weiss ich nicht,
dort ist die Nummerierung irgendwie komisch.gruss
v R
-
cairomm kannst du hier: http://cairographics.org/cairomm runterladen. Du musst es dir allerdings selbst bauen.
Danke, ich werde mal bei Gelegenheit schauen, ob ich das hinkriege...