Another GUI alternative?

clayasaurus clayasaurus at gmail.com
Mon Apr 17 12:37:34 PDT 2006


Nilo wrote:
> In article <e20mc9$bc5$1 at digitaldaemon.com>, clayasaurus says...
>> Nilo wrote:
>>> My question is: has someone tried to use fox from D? Would be possible for D
>>> call a library written in C++? 
>> Yes.
>>
>> If it is possible, what sould I do to port that
>>> library in a D's usable manner?
>> Create a C wrapper for it, then call the C wrapper from D.
> 
> What are the steps involved in creating a wrapper from C++? Is there a simple
> tutorial or how-to? Or samples?
> 
> I've done a search but could not find...
> 
> I would like to start these port. Maybe I can do it... ;-)
> 
> TIA
> 
> Nilo
> 

#1) First compile a foktk.lib of this library with DMC.

#2) The 'C' wrapper will be done in C++, but is called the C wrapper 
because you wrap the classes into C functions. First you have to locate 
the important classes in the library, and then you must create wrappers 
for them. It may go something like...

------------------------------------------------
#include "foxtk.h"

Window *window;

void window_Start(char[] title, int x, int y)
{
    window = new Window("Title", x,y);
}

void window_Close()
{
    window.close();
    delete window;
}
------------------------------------------------

Compile this with DMC as well, we'll name it foxtkglue.lib.

#3) The D interface. You can so something like...

module window;

// pretty it up
void start() { window_Start() }
void close() { window_Close() }

// C-functions
extern(C)
{
void window_Start(...);
void window_Close(...);
}

#4) Using
Compile your D code with your two .lib's, and do something like...

import window;

main()
{
   window.start(..,..,..);
   window.close(..,..,..);
}

----------------------------
Here's a C interface example I created with RakNet. 
http://www.dsource.org/projects/bindings/browser/trunk/raknet/rakglue

Goodluck.
~ Clay












More information about the Digitalmars-d mailing list