Jump to content

  • Log In with Google      Sign In   
  • Create Account


Compile GLEW statically on win32 with MinGW?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 JoryRFerrell2013   Members   -  Reputation: 192

Like
0Likes
Like

Posted 20 September 2013 - 12:21 PM

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);
	glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
	glutInitContextProfile(GLUT_CORE_PROFILE);

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

        glewInit();
	/*
	if(GLEW_OK != glewInitResult)
	{
		std::cerr << "ERROR: " << glewGetErrorString(glewInitResult);
		return 1;
	 }
	*/
	
	std::cout << "hello";
	glClearColor(0,0,0,0);
	glutMainLoop();
	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
    and...

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

    or...

    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?



Sponsor:

#2 JoryRFerrell2013   Members   -  Reputation: 192

Like
0Likes
Like

Posted 20 September 2013 - 01:18 PM

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.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS