D.gnu - Linking to C library [gdc/mac]
- Graham MacDonald (8/8) Jan 06 2007 Apologies if this has been asked previously - I'm new to D and haven't
- Johan Granberg (8/19) Jan 06 2007 Firstly glfw has d bindings already created in the standard distribution...
- Bradley Smith (7/18) Jan 06 2007 In addition to the d bindings mentioned previously, GLD is a D language
- Graham MacDonald (3/3) Jan 07 2007 Thanks guys - I took the code in the glfw package and made some minor
- Graham MacDonald (13/13) Jan 13 2007 I got glfw to link with my app, but I am having different problems with
- Johan Granberg (3/21) Jan 13 2007 Have you compiled the freetype binding and linked the resulting .o file ...
- Graham MacDonald (5/28) Jan 13 2007 .....that's the one! I didn't realise I have to compile the binding
- John Reimer (6/37) Jan 13 2007 You have to link these symbols in because they will be assigned pointers
Apologies if this has been asked previously - I'm new to D and haven't seen the info anywhere. I want to use a C library (glfw, probably others) from within my D code. I want to link using gdc. How can I do this? Am I right in thinking I would have to create a D module (as described for dmd in http://www.digitalmars.com/d/htomodule.html)? Thanks! Graham
Jan 06 2007
Graham MacDonald wrote:Apologies if this has been asked previously - I'm new to D and haven't seen the info anywhere. I want to use a C library (glfw, probably others) from within my D code. I want to link using gdc. How can I do this? Am I right in thinking I would have to create a D module (as described for dmd in http://www.digitalmars.com/d/htomodule.html)? Thanks! GrahamFirstly glfw has d bindings already created in the standard distribution. Secondly you can call any c function by declaring it for example "extern(C)int write(char*);". If you intend to use only a small subset of a library this is simpler than creating an entier d module. (a d module for linking with c is just some extern(c) declarations of structs and functions and some glue code to handle defines)
Jan 06 2007
In addition to the d bindings mentioned previously, GLD is a D language port of the GLFW library. It can be obtained from http://dsource.org/projects/schooner. However, it has not been tested with gdc, only with the DMD compiler on Linux and Windows. It should work with gdc, but the build has not been configured for it yet. Bradley Graham MacDonald wrote:Apologies if this has been asked previously - I'm new to D and haven't seen the info anywhere. I want to use a C library (glfw, probably others) from within my D code. I want to link using gdc. How can I do this? Am I right in thinking I would have to create a D module (as described for dmd in http://www.digitalmars.com/d/htomodule.html)? Thanks! Graham
Jan 06 2007
Thanks guys - I took the code in the glfw package and made some minor changes to get it building on mac and it works a treat now. g
Jan 07 2007
I got glfw to link with my app, but I am having different problems with freetype. I'm trying to statically link the latest version of freetype to my app. I have some bindings I took from the derelict freetype binding, but have removed the dynamic linking/derelict library code. The problem I'm having is that when I finally link my obj files, libraries & frameworks, I get an undefined symbol: __D8freetype2ft12__ModuleInfoZ Can someone explain what I'm missing here? I've linked with: gdc obj/*.o -g -o game -lglfw -lfreetype -framework Carbon -framework OpenGL -framework AGL Seems ok to me, but I'm sure I've missed something. Thanks in advance Graham
Jan 13 2007
Graham MacDonald wrote:I got glfw to link with my app, but I am having different problems with freetype. I'm trying to statically link the latest version of freetype to my app. I have some bindings I took from the derelict freetype binding, but have removed the dynamic linking/derelict library code. The problem I'm having is that when I finally link my obj files, libraries & frameworks, I get an undefined symbol: __D8freetype2ft12__ModuleInfoZ Can someone explain what I'm missing here? I've linked with: gdc obj/*.o -g -o game -lglfw -lfreetype -framework Carbon -framework OpenGL -framework AGL Seems ok to me, but I'm sure I've missed something. Thanks in advance GrahamHave you compiled the freetype binding and linked the resulting .o file in your app?
Jan 13 2007
Johan Granberg wrote:Graham MacDonald wrote:.....that's the one! I didn't realise I have to compile the binding since I was importing it. Thanks! grahamI got glfw to link with my app, but I am having different problems with freetype. I'm trying to statically link the latest version of freetype to my app. I have some bindings I took from the derelict freetype binding, but have removed the dynamic linking/derelict library code. The problem I'm having is that when I finally link my obj files, libraries & frameworks, I get an undefined symbol: __D8freetype2ft12__ModuleInfoZ Can someone explain what I'm missing here? I've linked with: gdc obj/*.o -g -o game -lglfw -lfreetype -framework Carbon -framework OpenGL -framework AGL Seems ok to me, but I'm sure I've missed something. Thanks in advance GrahamHave you compiled the freetype binding and linked the resulting .o file in your app?
Jan 13 2007
On Sat, 13 Jan 2007 16:59:19 +0000, Graham MacDonald wrote:Johan Granberg wrote:You have to link these symbols in because they will be assigned pointers to the freetype functions at runtime (from the shared library). If the the static import modules were used, meaning you are linking with a static lib, then you wouldn't have to link in the module. -JJRGraham MacDonald wrote:.....that's the one! I didn't realise I have to compile the binding since I was importing it. Thanks! grahamI got glfw to link with my app, but I am having different problems with freetype. I'm trying to statically link the latest version of freetype to my app. I have some bindings I took from the derelict freetype binding, but have removed the dynamic linking/derelict library code. The problem I'm having is that when I finally link my obj files, libraries & frameworks, I get an undefined symbol: __D8freetype2ft12__ModuleInfoZ Can someone explain what I'm missing here? I've linked with: gdc obj/*.o -g -o game -lglfw -lfreetype -framework Carbon -framework OpenGL -framework AGL Seems ok to me, but I'm sure I've missed something. Thanks in advance GrahamHave you compiled the freetype binding and linked the resulting .o file in your app?
Jan 13 2007