954,499 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Randomize number with OpenGL

I am taking a Computer Graphics course where we are doing some c++ programming using the OpenGL API. I'm writing a C++ program in Visual Studio.NET, where I've installed GLUT (Open GL Utility Toolkit). OpenGL, itself, apparently comes with VS.

The only include that I have in my one-file program is:

#include <GL/glut.h>


The program works fine up until the point where I need to randomize a number. When I try including stdlib.h or cstdlib in my file, I get an error message about redefinition and my program won't compile.

In the textbook the class is using, it shows rand() being used without having to include anything extra. I'm assuming it's somehow built into glut.h? However, even when I copy code directly out of a textbook example, I get the error message "unresolved external symbol referenced in function" and then "fatal error: 1 unresolved externals"

When I remove the line or two referencing rand() in my program, once again it compiles and runs fine. Please, how can I generate a random number from within an OpenGL program?

cscgal
The Queen of DaniWeb
Administrator
19,422 posts since Feb 2002
Reputation Points: 1,474
Solved Threads: 230
 

Oh boy,
Make sure you include the .h files in your project - add them to your project.
Copy "glut32.dll" to your C:\WINDOWS\system\
Copy "glut32.lib" to your C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib
Create a directory called "gl" under
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\

and copy glut32.h to it, ie under
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\gl\
i copied all the GLUT .h files there anyway.

When you create your project, click the project name then choose properties, From the Configuration list box, select All Configurations, In the left pane, select the Linker subtree and then the Input option. Add the given code to the Additional Dependencies text box in the right pane. This tells Visual Studio where to find GLUT. (Copy and Paste: opengl32.lib glu32.lib glut32.lib )

Good luck.
Intel

Intel
Light Poster
30 posts since Feb 2005
Reputation Points: 10
Solved Threads: 1
 

Thank you, Intel. However, all of that was done already :) And it works. I was able to create my first two OpenGL programs just fine ... this is the third project. The only time the program stops working is when I try to use rand(). It works other than that darn randomize!

Any other ideas?

cscgal
The Queen of DaniWeb
Administrator
19,422 posts since Feb 2002
Reputation Points: 1,474
Solved Threads: 230
 

In C++, rand() is defined in

#include <stdlib.h>

I used rand() and all i included is

#include <GL/glut.h>
Intel
Light Poster
30 posts since Feb 2005
Reputation Points: 10
Solved Threads: 1
 

Try

std::rand();

Here is how i used it

#include <iostream>
#include <cstdlib>
#include <GL/gl.h>
#include <GL/glu.h>
.....
double .... = std::rand();
Intel
Light Poster
30 posts since Feb 2005
Reputation Points: 10
Solved Threads: 1
 

This might sound silly silly, but when I did

#include <GL/glut.h>
#include <cstdlib>

I got a compile-time error message. But when I did

#include <cstdlib>
#include <GL/glut.h>

everything compiled and ran just fine. Either way, it all works now. Thank you for your help and support.

cscgal
The Queen of DaniWeb
Administrator
19,422 posts since Feb 2002
Reputation Points: 1,474
Solved Threads: 230
 

#include is declared in glut.h so when u declare it first it wont be redefined in glut.h , [#ifndef ... #def ... #endif]

Intel
Light Poster
30 posts since Feb 2005
Reputation Points: 10
Solved Threads: 1
 

Yes, but the problem is that when I only included glut.h, and not cstdlib or stdlib.h at all, I got a compiling error when I used rand() !!

cscgal
The Queen of DaniWeb
Administrator
19,422 posts since Feb 2002
Reputation Points: 1,474
Solved Threads: 230
 

My guess then is that rand is defined in the file space - glut.h, check it out and you'll see ....

Intel
Light Poster
30 posts since Feb 2005
Reputation Points: 10
Solved Threads: 1
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You