Managed DirectX na x64   zodpovězená otázka

VB.NET, DirectX

Mam problem s Managed DirectX ve VB.NET. Pouzivam Visual Basic 2008 Express Edition, verze DX SDK je June 2008 a jako OS mam 64-bit Vistu. Kdyz ale cokoli ve VB napisu s pouzitim DX knihoven, tak to bez problemu zkompiluju, pri spusteni(debug i normalni) to vsak hodi vyjimku BadImageFormatException, u ktere je napsano:is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)

Nejdriv jsem myslel, ze jsem neco spatne napsal a zjednodusil jsem to jak nejvic to slo a porad to same. Potom jsem si stahl z tohoto webu projekt z prvniho dilu o DirectX a bez jakekoli modifikace jsem ho zkompiloval a spustil, ale zase ta stejna chyba.

Tak jsem trochu prohledal internet a nekde jsem nasel, ze pro "normalni" vyvoj (v C++) jsou dstupne DX knihovny v 32 i 64-bit verzi, coz vsak neplati pro Managed DirectX, kde jsou pouze v 32-bit. A tyto knihovny se pry nedaji volat z 64-bit aplikace.

A jestli tomu dobre rozumim, tak kdyz zkompiluji projekt, tak se prevede do CIL, a dokompiluje se az pri spusteni na danem pocitaci podle daneho procesoru. A na 32-bit systemech se dokompiluje do 32-bit aplikace, zatimco na 64-bit systemech z toho bude 64-bit aplikace, ze ktere uz ale nejdou volat 32-bit DX knihovny. Nemam to vyzkousene, ale myslim si tedy, ze ten jeden stejny soubor by bezel pouze na 32-bit systemech a vubec nezalezi kde jsem to vyvijel.

Reseni jsem nasel jednoduche, nastavit ve Visual Studiu, aby se pri kompilaci do CIL napsalo, ze se to vzdy ma zkompilovat jako x86. Potom by se to na 64-bit systemech dokompilovalo jako by to bylo na 32-bit systemu a melo by to fungovat.

Mozna jsem slepy, ale moznost nastavit cilovou CPU architekturu jsem ve sve Express edici nenasel.

Jestli je problem v tom v cem jsem psal, jak se to resi? Jestli je problem jinde, prosim napiste. Dekuji moc za jakoukoli odpoved a omlouvam se, ze nepouzivam diakritiku, prestoze je to v pravidlech diskuzniho fora, ale nejsem v diakritice na klavesnici moc zbehly a trvalo by mi o dost dele nez bych to napsal.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tato možnost by měla být i v Express Edici, je to ve vlastnostech projektu, záložka Compile a tlačítko Advanced nebo něco takového.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem si stáhnul a nainstaloval Express edici a tohle klikátko tam není. Nicméně řešení existuje.

Zavřete Visual Basic Express edition a v Poznámkovém bloku nebo jiném textovém editoru otevřete soubor projektu (má příponu VBPROJ). Najděte v něm tyto dva řádky:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

Za každý z nich přidejte tento řádek:

<PlatformTarget>x86</PlatformTarget>

Soubor uložte. Po znovuotevření projektu už se bude aplikace kompilovat pro 32 bitů a mělo by to chodit.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dekuji, uz mi to vsechno hezky jede. Akorat by me zajimalo, proc to v Express edici nejde pres GUI. Myslite, ze Microsoft chtel, aby Express edice byla pro uplne zacatecniky a tudiz IDE osekali, aby se v tom zacatecnik nestracel (to si ale nemyslim, protoze tam je sposta jinych veci, o kterych nemam poneti co jsou), nebo spise proste chteli aby byl uzivatel free verze ochuzen o tuto moznost kvuli tomu aby si zakoupil licenci na verzi vyssi? Druhy pripad mi take neprijde realny, protoze myslim, ze v Microsoftu jsou pomerne chytri a asi by vedeli, ze programator by si to takhle dokazal vyresit. Nebo jenom pri vyvoji Express edice omylem smazali kus kodu? :D

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podle mě si asi někdo neuvědomil, že na 64bitovém systému se to bude kompilovat pro 64 bitů a řekl si, že to přepínátko dají pryč. Co si kdo na Express edici bude říkat, pro jakou platformu chce kompilovat?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak máte pravdu, možnost nastavit si cílovou platformu (x86/x64) v Express verzích skutečně není. Šlo by to zkompilovat pro x86 ručně pomocí kompilátoru ze SDK (/platform:x86), ale komu by se to takto chtělo dělat, že...

http://msdn.microsoft.com/en-us/vs2005/a...

Co se mi podařilo najít na Internetu, tak 64-bitová verze Managed DirectX skutečně neexistuje, takže bohužel musím konstatovat že máte smůlu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback