[ eva01 @ 04.04.2005. 12:01 ] @
Odneo sam moj programcic kod druga i pokusao da ga startujem ali je prijavio gresku:

Citat:

This aplication has failed to start because d3dx9_24.dll was not found. Re-instaling the application may fix this problem.


Koristio sam d3dx funkcije i ranije ali su programi radili na svim masinama. Posto on ima directx 9.0c ne deluje mi da je problem na njegovoj masini (tj. da mu zaista fali neki dll). Jel ima neko ideju kako da resim ovo ?
[ Reljam @ 04.04.2005. 17:31 ] @
Da. Odkako je D3DX presao iz .liba u .dll, potrebno je da isporucis pravi dll uz tvoj program. Znaci kada iskompajliras program, ti ga linkujes sa libom uz koji ide odredjena verzija dlla. Moras da obezbedis da i klijent ima taj dll - isto kao i sa d3d9.dll-om.

Jedini zvanicni nacin za redistribuciju d3dx-a je da koristis redist setup koji dobijas uz SDK.

Razlog za ovu promenu je to sto je dll-ove moguce patchovati ukoliko se pojavi neki security problem, a staticki linkovan kod nije.
[ Filip Strugar @ 06.04.2005. 07:50 ] @
E, gledam po netu, bash ste mess napravili sa tim lib->dll switchem :)
[ Reljam @ 06.04.2005. 08:26 ] @
Jeste, maltretiranje je. Sa druge strane, nadam se da je barem jasan razlog za tu promenu: u zadnjih par godina, Microsoft se vrlo fokusira na sigurnost - razultati su proizvodi tipa XP SP2 i Windows Server 2003. Naravno ima tu jos da se radi, ali je quality bar za nove proizvode na stvarno visokom nivou. Jedna od posledica poostrenja kriterijuma je odluka da sav kod treba da bude servicable, sto znaci da moze da se patchuje - a libovi to nisu. D3DX jos i cita fajlove, tako da je attack surface area dosta veliki, i zbog toga on stvarno treba da bude .dll. Jer ako se sutra ispostavi da recimo postoji rupa u kodu koji cita shadere, to mora da moze da se patchuje.

Sve zajedno, ovo je u stvari slucaj 'trazili ste - gledajte': korisnici sa pravom traze vecu sigurnost, ali to ima svoju 'cenu'. U ovom slucaju, ta cena je komfor developera.
[ eva01 @ 07.04.2005. 18:13 ] @
Odneo sam kod druga setup koji se nalazi u dxsdk/redist/directx9 i instalirali smo na njegovoj mašini ali i dalje ima istu grešku ? Jesi li mislio naj taj setup ? Ako sam dobro shvatio sada se direct3dx dll ovi distribuiraju uz directx.
[ Reljam @ 07.04.2005. 19:29 ] @
Od februarskog SDK, svaki program koji koristi d3dx se linkuje uz odredjenu verziju d3dxa. d3dx_24.dll je februarski D3DX, a d3dx_25.dll je aprilski D3DX. Sledeca verzija D3DXa bice, pogadjate, d3dx_26. Ovo takodje znaci da uz program koji koristi jednu odredjenu verziju d3dx-a treba da se isporuci i directx redist koji ce instalirati odgovarajucu verziju d3dx-a.

Znaci ako imas program koji je linkovan uz d3dx_24.dll, instalacija najnovijeg SDK nece resiti problem jer se uz njega isporucuje d3dx_25.dll. Inace, jos uvek razmatramo alternative za redistribuciju d3dx-a.
[ bkaradzic @ 07.04.2005. 22:56 ] @
Citat:
Reljam: Znaci ako imas program koji je linkovan uz d3dx_24.dll, instalacija najnovijeg SDK nece resiti problem jer se uz njega isporucuje d3dx_25.dll. Inace, jos uvek razmatramo alternative za redistribuciju d3dx-a.
Nadam se da ne razmatrate COM varijante... ;)
Zamisli:

ID3DXMATRIX* pMatrix = CreateD3DXMatrix();
pMatrix->QueryInterface(D3DX_25...
pMatrix->LoadIdentity();
pD3DDevice->SetTransform(D3DTS_WORLDMATRIX, pMatrix);
pMatrix->Release();

LOL! :)

D3DX je po meni nešto kao GLU-GLUT u OpenGL-u. Ja bih ga podelio u par delova npr. math, pomoćni wrapperi za D3D i napredne tehnike. Jer očigledno nikome ne treba PRT prekalkulacija ili UVA za samu igru nego za alate. Na taj način u verovatno u većini slučajeva možete da izbegnete uopšte update-ovanje common dela D3DX (math i wrapperi).
[ Filip Strugar @ 08.04.2005. 08:17 ] @
Citat:
Reljam: Sve zajedno, ovo je u stvari slucaj 'trazili ste - gledajte': korisnici sa pravom traze vecu sigurnost, ali to ima svoju 'cenu'. U ovom slucaju, ta cena je komfor developera.


E takav stav bas podize MS developer relationship na novi nivo ;)

MS je trebao prvo da proceni sve posledice, pa onda da urade neki scenario (koji ce ionako morati da urade) u kome se problem missing dll-a bar donekle automatski resava.

Ja imam neku biblioteku koja koristi d3dx utility samo zbog math-a, i problem sam morao da resim tako sto sam iscupao d3dx lib iz nekog starog SDK-a i linkovao fixno na njega :)
[ Reljam @ 08.04.2005. 18:12 ] @
Gresis, MS jeste procenio pros i cons, i izvagao da je security bitniji od velicine redistriba. Prilicno je neodgovorno ignorisati security probleme, mada to uglavnom game developeri rade - to uostalom njima ni nije deo business modela. MS nazalost nema taj luksuz, i security je prvi prioritet. Ono sto ce se desiti u buducnosti je da ce velicina redistriba biti svedena na nesto malo prikladnije, ali ce sigurno i dalje sve biti dll.

Ako imas bolju alternativu, molim te predlozi je. Ne zezam se, ne prozivam te, kazi ako moze bolje, i vrlo je moguce da cemo to i uraditi.
[ Filip Strugar @ 11.04.2005. 12:41 ] @
Jest to je kao kad bi sad Mercedes otkrio da je aluminijumski tip felni koje koristi 30% njihovih vozila potencijalno opasan, i onda blokira servis svih automobila tog tipa dok ih vlasnici ne zamene novom verzijom - i onda jos to ponava svaka 2 meseca ;)

Shalim se, u pravu si: developerima security nije bitan deo business modela i samim tim ne kontamo svu frku - mada mi se cini da je sve moglo biti uradjeno malo elegantnije.
[ Reljam @ 11.04.2005. 17:43 ] @
Ok, ako znas da moze elegantnije, kazi kako.
[ Filip Strugar @ 12.04.2005. 09:56 ] @
Citat:
Reljam: Ok, ako znas da moze elegantnije, kazi kako.


Rekao sam 'cini mi se' a ne 'znam' - a otkud bih znao?
Sta se žestiš tolko :)