Jump to content
  • Advertisement
Sign in to follow this  

Compile GLEW statically on win32 with MinGW?

This topic is 2131 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am having troubles running glew.


Using the following code:

#include <GL/glew.h>
#include <GL/freeglut.h>
#include <iostream>

int main(int argc, char **argv)
	glutInit(&argc, argv);
	glutInitContextVersion(3, 1);

	glutInitWindowSize(1024, 768);
	//glutInitWindowPosition(100, 100);
	glutCreateWindow("First run.");
	// init glew
	GLenum glewInitResult;
        glewExperimental = GL_TRUE;

	if(GLEW_OK != glewInitResult)
		std::cerr << "ERROR: " << glewGetErrorString(glewInitResult);
		return 1;
	std::cout << "hello";
	return 0;

I then compile/link with the following in MinGW:

    g++ -c -o glewTest.o glewTest.cpp -I"C:\MinGW\include\GL" -DGLEW_STATIC

    g++ -o glewTest.exe glewTest.o -L"C:\MinGW\lib" -lglew32 -lfreeglut -lopengl32 -lglu32 -Wl,--subsystem,windows


    g++ -o glewTest.exe glewTest.o -L"C:\MinGW\lib" -lglew32mx -lfreeglut -lopengl32 -lglu32 -Wl,--subsystem,windows



The "g++ -o glewTest.exe glewTest.o -L"C:\MinGW\lib" -lglew32 -lfreeglut -lopengl32 -lglu32 -Wl,--subsystem,windows"

does compile, but when I try to run I get the following error:

    "The procedure entry point glewInit@0 could not be located in the dynamic link library glew32.dll"


When I try to compile with "g++ -o glewTest.exe glewTest.o -L"C:\MinGW\lib" -lglew32mx -lfreeglut -lopengl32 -lglu32

-Wl,--subsystem,windows", I get the follow error:

    "glewTest.o:glewTest.cpp:(.text+0x15a): undefined reference to `glewInit@0' collect2.exe: error: ld returned 1 exit status"


I am at a loss...what do I do to either get the sys to find the dll, or get it to find the lib ref?


I am fine with either a static or dynamic lib build, but I have already tried the following with the dll version:

  1. Place the DLL in the same folder with the executable. No joy.

  2. Make sure I am using the same version and mem type (32/64bit) of the Lib with the DLL. Did so. Had no bearing.

  3. Make sure I am placing the lib/DLL/Headers in the correct paths. Did so. Also had no bearing.

  4. Make sure I am linking my necessary files correctly in the compile process. Obviously not working.

I have tried sifting through over 40-50 different webpages and they all pretty much say the same thing. Any new ideas?

Share this post

Link to post
Share on other sites

Never mind...just got help solving the problem.


Simply go download the glew src code (glew.c) and use #include "glew.c" in main project file.

Compile/Link with -DGLEW_STATIC IN compile options, and you should be up and running.


As others explained to me, the library relies on grabbing functions from a preset pool that has been

set-up by the project managers. This means that linking to the dll is pointless because the code can't

take advantage of any new functionality that doesn't exist in the DLL. So when new stuff becomes

available and your user base wants to take advantage of it, they must upgrade the dll also, or your code

will be useless. So you might as well save everyone the trouble and just use the static library version

from the get-go.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!