Archief - DirectX SDK : unresolved external symbol

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

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.
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?

fretn

Legacy Member
ik heb nix van ervaring met directx maar mijn logisch antwoord is ... gebruik de directx8 sdk ipv de 9

Da Turtle

Legacy Member
fretn zei:
ik heb nix van ervaring met directx maar mijn logisch antwoord is ... gebruik de directx8 sdk ipv de 9
Ik vond die nie, weet er iemand waar ik die kan vinden?

Krueger

Legacy Member
Da Turtle zei:
Ik vond die nie, weet er iemand waar ik die kan vinden?
Ik denk niet dat het daaraan gaat liggen. Misschien eens een 9 schrijven ipv een 8 in : Direct3DCreate8 , dunno :)

Da Turtle

Legacy Member
ga ik eens proberen :)

*edit : Nope, zelfde error alleen staat er
symbol _Direct3DCreate9@4
in plaats van
symbol _Direct3DCreate8@4

tremor

Legacy Member
ge der voor zorgen dat de juiste libraries aan uw project zijn toegevoegd, want anders gaat ge linker errors krijgen

Code:
#pragma comment(lib,"d3d8.lib")
#pragma comment(lib,"d3dx8.lib")

toevoegen aan uw file, en zorg ook da ge d3d8.h en d3dx8.h include

(als ge DirectX 9 gebruikt, de 8 vervangen door 9 :p)

fretn

Legacy Member
ik heb hem op cd staan 137 MB ... nie echt zin om die te uppen :)

btw: je hebt toch uw directx libs 'geinclude' in uw project eh ?

EDIT: fu tremor :p

Da Turtle

Legacy Member
tremor zei:
Code:
#pragma comment(lib,"d3d8.lib")
#pragma comment(lib,"d3dx8.lib")

Deze had ik nodig, thx :niceone::)
Kwist da nie da da der bij moest. Da staat er ook nie in in da boek :unsure:

fretn

Legacy Member
Da Turtle zei:
Deze had ik nodig, thx :niceone::)
Kwist da nie da da der bij moest. Da staat er ook nie in in da boek :unsure:

je kan die ook include in de project opties, meebie dat er in uw boek daarover iets staat (tenzij ze in het boek geen msvc 6.0 gebruiken)

Da Turtle

Legacy Member
het staat dat je die "include/" map moet bijzetten, en kheb da gedaan, maar da was blijkbaar nie genoeg :unsure:
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan