Mam problem jak mi się wydaje z przestrzeniami nazw tylko , że nie bardzo umiem go naprawić.
Wyskakuje mi błąd :
Error 5 error LNK2005: "unsigned char * __cdecl LoadBitmapFile(char *,struct tagBITMAPINFOHEADER *)" (?LoadBitmapFile@@YAPAEPADPAUtagBITMAPINFOHEADER@@@Z) already defined in chapter10.obj C:\Users\Bob\Desktop\terrain\snowstorm.obj terrain
snowstorm.cpp
#include "snowstorm.h"
#include "bitmap.h"
chapter.cpp
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winuser.h>
#include <gl/gl.h>
#include <stdio.h>
#include <math.h>
#include "HiResTimer.h"
#include "bitmap.h"
#include "glext.h"
#include "snowstorm.h"
#define WND_CLASS_NAME "OpenGL Window Class"
bitmap.h
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#define BITMAP_ID 0x4D42 // identyfikator pliku BMP
unsigned char *LoadBitmapFile(char *filename, BITMAPINFOHEADER *bitmapInfoHeader)
{
FILE *filePtr; // wskaźnik pliku
BITMAPFILEHEADER bitmapFileHeader; // nagłówek pliku
unsigned char *bitmapImage; // bufor obrazu
int imageIdx = 0; // licznik bajtów obrazu
unsigned char tempRGB; // zmienna zamiany składowych
// otwiera plik w trybie "read binary"
filePtr = fopen(filename, "rb");
if (filePtr == NULL)
return NULL;
// wczytuje nagłówek pliku
fread(&bitmapFileHeader, sizeof(BITMAPFILEHEADER), 1, filePtr);
// sprawdza, czy rzeczywiście jest to plik BMP
if (bitmapFileHeader.bfType != BITMAP_ID)
{
fclose(filePtr);
return NULL;
}
// wczytuje nagłówek obrazu zapisanego w pliku
fread(bitmapInfoHeader, sizeof(BITMAPINFOHEADER), 1, filePtr);
// ustawia wskaźnik pliku na początku danych opisujących obraz
fseek(filePtr, bitmapFileHeader.bfOffBits, SEEK_SET);
// przydziela pamięć na bufor obrazu
bitmapImage = (unsigned char*)malloc(bitmapInfoHeader->biSizeImage);
// sprawdza, czy pamięć została przydzielona
if (!bitmapImage)
{
free(bitmapImage);
fclose(filePtr);
return NULL;
}
// wczytuje dane obrazu
fread(bitmapImage, 1, bitmapInfoHeader->biSizeImage, filePtr);
// sprawdza, czy operacja powiodła się
if (bitmapImage == NULL)
{
fclose(filePtr);
return NULL;
}
// zamienia składowe R i B values, aby uzyskać właściwy format RGB w OpenGL
for (imageIdx = 0; imageIdx < bitmapInfoHeader->biSizeImage; imageIdx+=3)
{
tempRGB = bitmapImage[imageIdx];
bitmapImage[imageIdx] = bitmapImage[imageIdx + 2];
bitmapImage[imageIdx + 2] = tempRGB;
}
// zamyka plik i zwraca wskaźnik bufora zawierającego obraz
fclose(filePtr);
return bitmapImage;
}
Z góry dzięki za każdą pomoc