cairo でグラフィックス描画しようと思ってためしてみたら、なぜかプログラム全体が実行されない。

とりあえず hello.c なんて試してみたけど、


#include <cairo.h>
 
int
main (int argc, char *argv[])
{
  cairo_surface_t *surface;
  cairo_t *cr;
 
  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 80);
  cr = cairo_create (surface);
 
  cairo_select_font_face (cr, "serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
  cairo_set_font_size (cr, 32.0);
  cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
  cairo_move_to (cr, 10.0, 50.0);
  cairo_show_text (cr, "Hello, world");
  cairo_destroy (cr);
  cairo_surface_write_to_png (surface, "hello.png");
  cairo_surface_destroy (surface);
 
  return 0;
}

エラーが出るわけでもなく、実行すると何も出力せずに終わる。main関数の最初に std::cout << "begin program" << std::endl; とかやってもメッセージが出力されない。cairo_image_surface_create 以下の処理をコメントアウトすると begin program は出力された。うーん。

この現象が起きたのは Ecipse CDT + cygwin の環境。cygwin 単体や Debian Etch 上でコンパイルしたものはちゃんと動作してた。なんだかさいきん Eclipse CDT でハマりまくり。。。

tags: EclipseCDT zurazure

Posted by NI-Lab. (@nilab)