Sign in to follow this  
h4tt3n

Setting up GLFW3 in Code::Blocks (windows)?

Recommended Posts

h4tt3n    1974

Hello folks,

 

I'm hoping someone here might know how to link to the new glfw 3 in code blocks? I have worked with earlier versions of glfw and code blocks for years without much trouble, so I didn't expect having to ask for help on this one.

 

When trying to compile a program, I get a series of "undefined reference to..." errors, indicating that it's a linker problem.

 

I am using the Code::Blocks 12.11 mingw setup available here ( http://www.codeblocks.org/downloads/26 ) and the GLFW 3.0.3 64-bit binaries available here ( http://www.glfw.org/download.html ). I'm running a fresh windows 7 64-bit install.

 

This is what I did:

 

The two header files went into CodeBlocks/MinGW/include/GLFW

The two lib files went into CodeBlocks/MinGW/lib

The dll file went into Windows/System32 

 

As for linking to the library I have tried a lot of different setups without any hint of success. The setup I have used for glfw2 does not work.

 

Does anyone else experience this kind of problem? Am I missing something obvious? Any advice or guidance is welcome!

 

Cheers & merry christmas,

Mike

 

 

Share this post


Link to post
Share on other sites
BitMaster    8651

I'm usually not using Code::Blocks with the prepackaged compiler, but from glancing at the page I suspect it comes with the official MinGW compiler. That's a nice and safe compiler, very mature but also not very current. Most importantly, the standard MinGW compiler only does 32bit builds. I don't know how MinGW behaves when asked to linked to a 64bit library in a 32bit project but if it behaves like MSVC, it will silently ignore 64bit libraries and not link them.

Use the [url=http://sourceforge.net/projects/mingwbuilds/]MinGW build project[/url] if you want a more current MinGW compiler, interesting standard library options and/or 64bit support.

 

Please note that having a 64bit Windows does not require you to write 64bit programs. In fact, there are extremely few situations which require you to write 64bit code. There are more but still few applications where 64bit has some kind of advantage.

 

Also note that the downloads on the official Code::Blocks page are often very old. Read about [url=http://forums.codeblocks.org/index.php/board,20.0.html]nightly builds[/url].

Share this post


Link to post
Share on other sites
TheUnnamable    1129

I hope this helps, even though I'm using 32bit builds.

-lglfw3
-lopengl32
-lgdi32

These are my linker settings for glfw projects. In case this didn't help, could you give a few "undefined reference to..." messages? Knowing what kind of functions it misses might help.

Share this post


Link to post
Share on other sites
h4tt3n    1974

Okay, I got it working with 32-bit so far and have pinpointed the problem. It tuned out that glfw3 can be set up exactly as older versions, with one exception: you need to link to the windows specific gdi32 dll file. This baffles me, since this wasn't necessary before, and since glfw is supposed to be platform independent.

Once I've worked through all the details of setting up glfw3, I'll post a how-to for future reference.

 

Cheers & merry christmas,

Mike

Share this post


Link to post
Share on other sites
Chris_F    3030


Okay, I got it working with 32-bit so far and have pinpointed the problem. It tuned out that glfw3 can be set up exactly as older versions, with one exception: you need to link to the windows specific gdi32 dll file. This baffles me, since this wasn't necessary before, and since glfw is supposed to be platform independent.

 

What? What does platform independence have to do with needing to link to gdi32.dll? You also have to link to user32.dll and kernel32.dll. On Linux you would have to link to things like libdl and libX11. GLFW can't handle the the platform specific windowing and library loading unless you link your program to the libraries where those functions reside. If you used the [b]-mwindows[/b] option then you wouldn't have to explicitly link to gdi32.dll or user32.dll, it would be automatic.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this