This isn’t a direct OpenGL question but if anyone can give me some assistance that would be great. I am having “Unresolved externel…” errors when attempting to program an OpenGL program. I am using different header files for each module of the program. There is a particular module that contains all my global variables and functions. When I declare the variable straight out, my compiler BCB5, says that there are multiple definitions of the variable. When I declare the variable with extern, I get the unresolved error.
Is there any hints anyone can give me?
So what is the error?
We can’t read your mind.
Have you entered code to ensure a file gets included only once. This way you won’t get it redefined because of multiple inclusions.
eg.
#ifndef MYFILEINCLUDED
#define MYFILEINCLUDED
Code…
#endif
Yep, you do need to make certain that your header files are “wrapped” to guard against multiple inclusion by the preprocessor:
#ifndef MYFILEINCLUDED
#define MYFILEINCLUDED
.
.
.
#endif
But, if you wrap the header, you can still have trouble if your header file contains definitions. It is good practice for your header files to contain only declarations.
Example:
#ifndef _MYHEADER_H
#define _MYHEADER_Hextern int myinteger; // Ok, declaration of
// myinteger, it must
// be defined elsewherefloat myfloat; // risky, during
// compilation, if more
// than one .c/.cpp
// includes this header
// the symbol myfloat
// will be duplicated
// and many linkers
// will complain#endif//_MYHEADER_H
I’m a little rusty on my C/C++, but I believe these facts to be correct.
[This message has been edited by ComoNo (edited 02-04-2002).]
Why dont you try including #pragma once in the beginning of your code…
e.g.
#pragma once
… your code …
Sorry, I’ve never used pragma so I don’t know how it works. ComoNo is right though. If you place only declarations in your header files it can save you a lot of headaches.
PS: Does anyone know where I can find a good MS VC++6.0 discussion forum? There’s still a lot I need to learn about the program.