On 12/18/12 20:23, Mike Parker wrote:
> On Tuesday, 18 December 2012 at 19:21:09 UTC, Mike Parker wrote:
>> On Tuesday, 18 December 2012 at 18:24:03 UTC, Sonia Hamilton wrote:
>>
>>> [1]glib. I'm having problems compiling, what would the correct command
>>> line options?
>>>
>>> % dmd -I/usr/include/glib-2.0 hello.d -L-L/usr/local/lib -L-lglib-2.0
>>> hello.d(3): Error: undefined identifier GDateTime
>>> hello.d(3): Error: undefined identifier GTimeZone
>>
>> Your problem isn't the command line options, but that you're missing 
>> definitions of GDateTime and GTimeZone. You'll need to define those 
>> somewhere, perhaps the top of your file here for testing, so that D can know 
>> what they are.
> 
> I just took a look at the GLib docs and see that both of these are opaque 
> structs, so this should do it for you:
> 
> struct GDateTime;
> struct GTimeZone;
> 

And if you don't want to do all of that manually, you could use

   http://repo.or.cz/w/girtod.git

which would make a simple glib D hello-world program look like

   import glib = gtk2.glib2;
   import std.stdio, std.conv;

   void main() {
      auto tz = glib.TimeZone.new_local();
      scope (exit) tz.unref();
      auto dt = glib.DateTime.new_now(tz);
      scope (exit) dt.unref();
      writeln("Hello World! It is " ~ to!string(dt.format("%c")));
   }

Compile with

   gdc -fdeprecated -O2 -I $PATH_TO_GIRTOD  glibhello.d 
$PATH_TO_GIRTOD/gtk2/glib2.o `pkg-config --libs glib-2.0`
 

This might only work with GDC right now; I have no idea about DMD - never tried 
it.
There are other gtk bindings out there (eg gtkd) that may work with that 
compiler
and probably support glib too.

artur   

Reply via email to