I get some strange errors when I try to declare some methods as static. I've searched on google for it, but havn't managed to solve it. Here's the error messages:
error LNK2001: unresolved external symbol "public: static struct IDirect3DDevice9 * Graphics::d3ddev" ([email="?d3ddev@Graphics@@2PAUIDirect3DDevice9@@A"]?d3ddev@Graphics@@2PAUIDirect3DDevice9@@A[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK2001: unresolved external symbol "public: static struct IDirect3D9 * Graphics::d3d" ([email="?d3d@Graphics@@2PAUIDirect3D9@@A"]?d3d@Graphics@@2PAUIDirect3D9@@A[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK2001: unresolved external symbol "public: static struct Graphics::CUSTOMVERTEX * Graphics::vertices" ([email="?vertices@Graphics@@2PAUCUSTOMVERTEX@1@A"]?vertices@Graphics@@2PAUCUSTOMVERTEX@1@A[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK2001: unresolved external symbol "public: static struct IDirect3DVertexBuffer9 * Graphics::v_buffer" ([email="?v_buffer@Graphics@@2PAUIDirect3DVertexBuffer9@@A"]?v_buffer@Graphics@@2PAUIDirect3DVertexBuffer9@@A[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK2001: unresolved external symbol "public: static struct _D3DSURFACE_DESC Graphics::surface" ([email="?surface@Graphics@@2U_D3DSURFACE_DESC@@A"]?surface@Graphics@@2U_D3DSURFACE_DESC@@A[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK2001: unresolved external symbol "public: static struct IDirect3DTexture9 * Graphics::texture" ([email="?texture@Graphics@@2PAUIDirect3DTexture9@@A"]?texture@Graphics@@2PAUIDirect3DTexture9@@A[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK2001: unresolved external symbol "public: static void * Graphics::pVoid" ([email="?pVoid@Graphics@@2PAXA"]?pVoid@Graphics@@2PAXA[/email]) C:\Users\Simon Blom\Desktop\AvoidBall\AvoidBall\Graphics.obj
error LNK1120: 7 unresolved externals C:\Users\Simon Blom\Desktop\AvoidBall\Debug\AvoidBall.exe
GraphicsEngine.h
[source lang="cpp"]
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment (lib, "d3d9.lib")
#pragma comment (lib, "d3dx9.lib")
#pragma once
class GraphicsEngine
{
public:
static void Initialize(HWND hWnd);
static void InitGraphics(void);
static void Update(void);
static void Draw(void);
public:
static LPDIRECT3D9 d3d;
static LPDIRECT3DDEVICE9 d3ddev;
static LPDIRECT3DVERTEXBUFFER9 v_buffer;
static IDirect3DTexture9* texture;
static D3DSURFACE_DESC surface;
static VOID* pVoid;
public:
static struct CUSTOMVERTEX { float X, Y, Z, RHW; D3DCOLOR COLOR; float U, V; };
#define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
static CUSTOMVERTEX vertices[4];
};
[/source]
GraphicsEngine.cpp
[source lang="cpp"]
#include <d3d9.h>
#include <d3dx9tex.h>
#include "GraphicsEngine.h"
#include "Main.h"
void GraphicsEngine::Initialize(HWND hWnd)
{
d3d = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.Windowed = false;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp.BackBufferWidth = SCREEN_WIDTH;
d3dpp.BackBufferHeight = SCREEN_HEIGHT;
d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev);
}
void GraphicsEngine::InitGraphics(void)
{
D3DXCreateTextureFromFileEx(d3ddev, L"texture.jpg", 0, 0, 0, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, NULL, NULL, &texture);
texture->GetLevelDesc(0, &surface);
d3ddev->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &v_buffer, NULL);
vertices[0].COLOR = D3DCOLOR_ARGB(255, 255, 255, 255);
vertices[0].X = 100;
vertices[0].Y = 100;
vertices[0].Z = 0;
vertices[0].RHW = 1;
vertices[0].U = 0.0f;
vertices[0].V = 0.0f;
vertices[1].COLOR = D3DCOLOR_ARGB(255, 255, 255, 255);
vertices[1].X = 100 + 25;
vertices[1].Y = 100;
vertices[1].Z = 0;
vertices[1].RHW = 1;
vertices[1].U = 1.0f;
vertices[1].V = 0.0f;
vertices[2].COLOR = D3DCOLOR_ARGB(255, 255, 255, 255);
vertices[2].X = 100 + 25;
vertices[2].Y = 100 + 25;
vertices[2].Z = 0;
vertices[2].RHW = 1;
vertices[2].U = 1.0f;
vertices[2].V = 1.0f;
vertices[3].COLOR = D3DCOLOR_ARGB(255, 255, 255, 255);
vertices[3].X = 100;
vertices[3].Y = 100 + 25;
vertices[3].Z = 0;
vertices[3].RHW = 1;
vertices[3].U = 0.0f;
vertices[3].V = 1.0f;
}
void GraphicsEngine::Update(void)
{
v_buffer->Lock(0, 0, (void**)&pVoid, 0);
memcpy(pVoid, vertices, sizeof(vertices));
v_buffer->Unlock();
}
void GraphicsEngine::Draw(void)
{
d3ddev->Clear(9, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
d3ddev->BeginScene();
d3ddev->SetFVF(CUSTOMFVF);
d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX));
d3ddev->SetTexture(0, texture);
d3ddev->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2);
d3ddev->EndScene();
d3ddev->Present(NULL, NULL, NULL, NULL);
}
[/source]
Please help