Da Turtle
Legacy Member
Ik heb hier een boek liggen over programmeren met DirectX 8.
Compiler : Vis C++ 6.0
SDK : DirectX 9 SDK
Ik wil met directX 8 werken omdat het boek ook directX 8 gebruikt, dus ik volg de instructies die in het boek staan om een direct3D device te maken en zet dit ondertussen ook in een aparte class.
Als ik probeer te compilen komt geeft ie geen error, maar als ik wil builden krijg ik volgende :
DirectX.obj : error LNK2001: unresolved external symbol _Direct3DCreate8@4
Debug/DirectX.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Wat ik nu denk is dat deze mis is Direct3DCreate8(D3D_SDK_VERSION). Die D3D_SDK_VERSION is waarschijnlijk 9 maar ik werk met 8.
Weet er iemand hoe ik in deze functie doorgeef dat ik DirectX 8 wil? Ofwel welke andere fout dit kan zijn?
Compiler : Vis C++ 6.0
SDK : DirectX 9 SDK
Ik wil met directX 8 werken omdat het boek ook directX 8 gebruikt, dus ik volg de instructies die in het boek staan om een direct3D device te maken en zet dit ondertussen ook in een aparte class.
Code:
class cD3D
{
private:
// Variables
IDirect3D8 *g_pD3D;
IDirect3DDevice8 *g_pD3DDevice;
public:
// Variables
// Functions
cD3D(UINT width, UINT height, D3DFORMAT format, HWND *hWnd);
~cD3D(){}
};
cD3D::cD3D(UINT width, UINT height, D3DFORMAT format, HWND *hWnd)
{
// OBTAIN DIRECT3D INTERFACE
if((g_pD3D = [COLOR=Red]Direct3DCreate8(D3D_SDK_VERSION)[/COLOR]) == NULL)
{
// CRITICAL ERROR !
}
// DISPLAY MODE
D3DDISPLAYMODE d3ddm;
d3ddm.Width = width;
d3ddm.Height = height;
d3ddm.RefreshRate = 0;
d3ddm.Format = format;
// CHECK ID DISPLAY ADAPTER CAN HANDLE THE COLOR FORMAT
if(FAILED(g_pD3D->CheckDeviceType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, format, format, false)))
{
// CRITICAL ERROR !
}
// PRESENTATION METHOD
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.Windowed = FALSE;
d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3dpp.BackBufferFormat = d3ddm.Format;
// CREATING DEVICE
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, *hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pD3DDevice)))
{
// CRITICAL ERROR !
}
}
Als ik probeer te compilen komt geeft ie geen error, maar als ik wil builden krijg ik volgende :
DirectX.obj : error LNK2001: unresolved external symbol _Direct3DCreate8@4
Debug/DirectX.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Wat ik nu denk is dat deze mis is Direct3DCreate8(D3D_SDK_VERSION). Die D3D_SDK_VERSION is waarschijnlijk 9 maar ik werk met 8.
Weet er iemand hoe ik in deze functie doorgeef dat ik DirectX 8 wil? Ofwel welke andere fout dit kan zijn?

)