Dx 9 hlp :(
ok, long bit of code cos i threw it in2 1 doc 4 ya, i get one error when compiled in VS.net and can't fix it lol. It is:
main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function "int __cdecl GfxStart(void)" (?GfxStart@@YAHXZ)
Debug/TDS.exe : fatal error LNK1120: 1 unresolved externals
#include <windows.h>
#include <stdio.h>
//DirectX
#pragma (d3d9.lib)
#pragma (d3dx9.lib)
#include <d3d9.h>
#include <d3dx9.h>
//Instances
HINSTANCE g_hInst;
HWND g_hWnd;
IDirect3D9 *g_pD3D = NULL;
IDirect3DDevice9 *g_pD3DDevice = NULL;
//Defines
#define WNDWIDTH 800
#define WNDHEIGHT 600
#define WNDTYPE WS_OVERLAPPEDWINDOW
const char g_szClass[] = "TDSClass";
const char g_szCaption[] = "TheDarkSoldiers Equilibrium - TheBalanceOfPower";
//Prototypes
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow);
void AppError(BOOL Fatal, char *Text, ...);
long FAR PASCAL WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL RegisterWindowClasses(HINSTANCE hInst);
BOOL UnregisterWindowClasses(HINSTANCE hInst);
HWND CreateMainWindow(HINSTANCE hInst);
BOOL DoInit();
BOOL DoShutdown();
BOOL DoPreFrame();
BOOL DoFrame();
BOOL DoPostFrame();
//Main Program
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
MSG Msg;
g_hInst = hInst;
//Register windows classes
if((RegisterWindowClasses(hInst)) == FALSE)
return FALSE;
//Create window
if((g_hWnd = CreateMainWindow(hInst)) == NULL)
return FALSE;
if(DoInit() == TRUE) {
//Enter pump
ZeroMemory(&Msg, sizeof(MSG));
while(Msg.message != WM_QUIT) {
if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
} else {
if(DoPreFrame() == FALSE)
break;
if(DoFrame() == FALSE)
break;
if(DoPostFrame() == FALSE)
break;
}}}
DoShutdown();
UnregisterWindowClasses(hInst);
return TRUE;
}
BOOL RegisterWindowClasses(HINSTANCE hInst)
{
WNDCLASSEX wcex;
//Create window class and reg
wcex.cbSize = sizeof(wcex);
wcex.style = CS_CLASSDC;
wcex.lpfnWndProc = WindowProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInst;
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = NULL;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = g_szClass;
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wcex))
return FALSE;
}
BOOL UnregisterWindowClasses(HINSTANCE hInst)
{
UnregisterClass(g_szClass, hInst);
return TRUE;
}
HWND CreateMainWindow(HINSTANCE hInst)
{
HWND hWnd;
hWnd = CreateWindow(g_szClass, g_szCaption, WNDTYPE, 0, 0, WNDWIDTH, WNDHEIGHT,
NULL, NULL, hInst, NULL);
if(!hWnd)
return NULL;
ShowWindow(hWnd, SW_NORMAL);
UpdateWindow(hWnd);
return hWnd;
}
void AppError(BOOL Fatal, char *Text, ...)
{
char CaptionText[12];
char ErrorText[2048];
va_list valist;
if(Fatal == FALSE)
strcpy(CaptionText, "Error");
else
strcpy(CaptionText, "Fatal Error");
va_start(valist, Text);
vsprintf(ErrorText, Text, valist);
va_end(valist);
MessageBox(NULL, ErrorText, CaptionText, MB_OK | MB_ICONEXCLAMATION);
if(Fatal == TRUE)
PostQuitMessage(0);
}
long FAR PASCAL WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
BOOL DoInit()
{
BOOL GfxStart();
return TRUE;
}
BOOL DoShutdown()
{
return TRUE;
}
BOOL DoPreFrame()
{
return TRUE;
}
BOOL DoFrame()
{
return TRUE;
}
BOOL DoPostFrame()
{
return TRUE;
}
BOOL GfxStart()
{
D3DDISPLAYMODE d3ddm;
D3DPRESENT_PARAMETERS d3dpp;
if((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) {
//Error occured
}
if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm))){
//error occured
}
if(FAILED(g_pD3D->CheckDeviceType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A1R5G5B5, D3DFMT_A1R5G5B5,
FALSE))) {
//error occured
}
d3ddm.Width = 800;
d3ddm.Height = 600;
d3ddm.RefreshRate = 0;
d3ddm.Format = D3DFMT_A1R5G5B5;
ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.Windowed = FALSE;
d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3dpp.BackBufferFormat = d3ddm.Format;
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd,
D3DCREATE_MIXED_VERTEXPROCESSING, &d3dpp, &g_pD3DDevice))) {
//error occured
}
return TRUE;
}
|