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?

Recommended Answers

All 8 Replies

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

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?

In C++, rand() is defined in

#include <stdlib.h>

I used rand() and all i included is

#include <GL/glut.h>

Try

std::rand();

Here is how i used it

#include <iostream>
#include <cstdlib>
#include <GL/gl.h>
#include <GL/glu.h>
.....
double .... = std::rand();

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.

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

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() !!

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

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.