Wow, this is exactly my problem.

Except that I'm not including the CPP file. I'm only including the .h file and it's still giving me the error.

Unfortunately the error is way too fast to give a proper example. Lemme try to make a small example.

util.h
Code:
#ifndef UTILS_H_INCLUDED
#define UTILS_H_INCLUDED
int someglobalarray[5];

int somefuntionthatusesarray(int foo);
#endif
util.cpp
Code:
#include <stuff>
#include "util.h"

int somefuntionthatusesarray(int foo){
  return someglobalarray[foo];
}
main.cpp
Code:
#include <stuff>
#include "util.h"

int main () {
  someglobalarray[0] = 1;
  someglobalarray[1] = 2;
  someglobalarray[2] = 3;
  someglobalarray[3] = 4;
  someglobalarray[4] = 5;

  return somefuntionthatusesarray(3);
}
Okay, obviously I haven't compiled this, but I think it illustrates the problem. If I could compile this I compile this I would get:
Code:
-------------- Build: Release in numbrixgenerator ---------------

Linking console executable: bin\Release\whatever.exe
obj\Release\main.o:main.cpp:(.bss+0x4): multiple definition of `_someglobalarray'
obj\Release\util.o:utils.cpp:(.bss+0x0): first defined here
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
And no EXE.

Hu?