.[ ČeskéHry.cz ].
Visual Studio 2010 mě vytočilo
Jdi na stránku 1, 2, 3, 4  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 10. březen 2012, 23:01:34    Předmět: Visual Studio 2010 mě vytočilo Odpovědět s citátem

Všimli jste si, že programy přeložené ve Visual C++ 2010 nejdou spustit na ničem starším než Windows XP SP2? Tím mě teda vytočili. Ne proto, že bych používal nějaká prehistorická Windows, ale když něco napíšu jakože jednoduše a nezávisle na nových rozšířeních API, uvedu do dokumentace, že to má fungovat i na starších Windows. Ale ono nefunguje. Po prohledání netu jsem zjistil, že to je prostě "by design" Microsoftí knihovny - na XP SP1, W2000 či starším systému se nespustí, i kdyby tam člověk měl jen prázdný main().

Já jsem přitom jenom chtěl vyzkoušet, jak se program chová, když ho spustím na počítači bez DirectX 9. Jenže jsem nedokázal sehnat Windows, kde by byl SP2, ale nebylo DX9. Situaci jsem nakonec vyřešil překompilováním programu ve VC++ 2008. Ale jsem rád, že ty programy neprodávám - on se vždycky nějaký zákazník najde, co má na počítači něco jinak a pak dodatečně zjisšťovat, že program kvůli libovůli Microsoftu na některých počítačích zbytečně nefunguje, to je teda "radost"...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 10. březen 2012, 23:20:11    Předmět: Odpovědět s citátem

By design? To se mi nezdá.

Céčkové EXE vážou na verzi Windows dvě věci. Po spuštění linkované funkce API a verze C či C++ runtime knihovny.

Sada standardních systémových hlavičkových souborů respektuje makro WINVER (a další) podle kterých se deklarují funkce API dostupné na daném systému a starších pro nalinkování po spuštění. Pro WinXP je to #define WINVER 0x0501, pro Win2k pak 0x0500, atp.

Příslušné C/C++ runtime jsou redistributovatelné balíčky, takže je na starší systém stačí nainstalovat, nebo nastavit kompilaci ve Visualu Studiu tak, aby cílilo a linkovalo vůči starší verzi, a nebo je linkovat staticky. To sice dost zvětší EXE ale tuhle vazbu na systém odstraní.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 10. březen 2012, 23:37:46    Předmět: Odpovědět s citátem

Další věc, kterou EXE (PE) loader Windows ověřuje, jsou čísla minimální verze OS a subsystému (zde ekvivaletní) v hlavičce souboru. Dohledal bych si jakým parametrem linkeru se to nastavuje a poupravil podle potřeby.

Když nad tím ale dále uvažuju, vůbec nevylučuju že by MS zcela možnost cílit na starší verze runtime či OS odebral. Přece jen, když už tyhle verze standardně spotřebitelsky nepodporují, asi se nebudou obtěžovat ani s laděním výstupu nového kompilátoru.
Je podstatné se zamyslet, kam je daný kus software cílen, a zda je v daném segmentu více než zlomek uživatelů s dnes již nepodporovaným systémem, a jak moc velký problém to pro autora je. U vývoje her se určitě nemá smysl zaobírat staršími OS než plně aktualizované WinXP, i když právě zde málokterá hra využívá nějaké API (mimo DirectX), které by nebylo už na Win98.

Já takové štěstí nemám, já ty programy prodávám.
Ale i nejmodernější MinGW defaultně cílí na msvcrt.dll které je dostupné od Windows 95 OSR2, Cygwin má runtime celý svůj, a Digital Mars mi umí vyplivnout NE EXE pro Win 3, když jej potřebuju.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 10. březen 2012, 23:44:34    Předmět: Odpovědět s citátem

Tringi napsal:
U vývoje her se určitě nemá smysl zaobírat staršími OS než plně aktualizované WinXP

Někteří výrobci her dělají pouze pro DX10, což znamená, že nejstarší podporovaný Windows je Vista.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 11. březen 2012, 00:04:00    Předmět: Odpovědět s citátem

Tringi: Nezdát se ti to může, ale je to prostě tak. Promiň, ale je fakt zbytečné o tom teoretizovat, když už víme, jak je to doopravdy. Články k věci jsou na Googlu na dotaz "missing decodepointer". Hodně lidí se na to jen ptá, ale jsou tam i vysvětlení.

Ta věc se totiž projevuje tak, že ty programy při startu vyhodí jen tuhle hlášku:


Jde o to, že CRT knihovna VC2010 se odkazuje na nějaké věci z kernelu Windows, které před XP SP2 nejsou. Proto program nejde vůbec spustit.

(Tím chci říct, že co zde napsal Tringi, je matoucí, protože to dává pocit, že věci jsou jinak. Ale pravdou je to, co píšu já. Program se prostě nespustí bez ohledu na nastavení maker WINVER apod. A proto mě to vytočilo a proto jsem založil tohle vlákno.)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 11. březen 2012, 00:09:27    Předmět: Odpovědět s citátem

Ještě jsem našel v MSDN stránku o WINVER, kde Microsoft uvádí, že VC2008 i VC2010 nepodporují Windows 9x a NT. Čili opět "zapomněli" napsat, že ve skutečnosti nepodporují ani W2000 a XP před SP2 a W2003 před SP1.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 11. březen 2012, 00:09:47    Předmět: Odpovědět s citátem

Nevím, co řešíte. Na ostatních OS taky binárka z nových dev tools nejede v moc starých verzích OS. Microsoft jen donedávna "trhal" partu Wink.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 11. březen 2012, 00:39:35    Předmět: Odpovědět s citátem

Něco o tom jsem našel zde: http://qualapps.blogspot.com/2010/04/visual-c-2010-apps-dont-support-windows.html

Takže něco pravdy na tom bude. Jinak, potřebuješ nutně ty runtime knihovny z VS2010? Nestačily by ti třeba ty z verze 2008?

Ono se to totiž dá ve VS2010 nastavit:

citace:
To change the project toolset
-In Visual Studio, open the Property Pages for your project. In the left pane, expand Configuration Properties and then select General.

-In the right pane, select Platform Toolset and then select the toolset you want. For example, if you want to compile against the Visual Studio 2008 libraries, select v90.

-Click OK.


Wink
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 11. březen 2012, 02:23:28    Předmět: Re: Visual Studio 2010 mě vytočilo Odpovědět s citátem

Al napsal:
Tringi: Nezdát se ti to může, ale je to prostě tak. Promiň, ale je fakt zbytečné o tom teoretizovat, když už víme, jak je to doopravdy.

No lol, co je tohle za reakci?
Máš z nějakého důvodu potřebu nechápat co jsem měl na mysli? Pokud ano pak kontruji tím, že tvůj výrok zde:

Al napsal:
Všimli jste si, že programy přeložené ve Visual C++ 2010 nejdou spustit na ničem starším než Windows XP SP2?

...je zjevně nesprávný, protože je to jen otázka verze runtime který použiješ. Jak o příspěvek výše upřesnil Crypton, i z Visual C++ 2010 lze linkovat vůči v9.0 (Visual Studio 2008) knihovnám, které omezení na XP SP2 nemají. To je to, o čem jsem teoretizoval v posledních dvou větách mého prvního příspěvku, protože Visual Studio nepoužívám, a dané problematické chování může být způsobeno lecčím.

Al napsal:
Tím chci říct, že co zde napsal Tringi, je matoucí, protože to dává pocit, že věci jsou jinak. Ale pravdou je to, co píšu já. Program se prostě nespustí bez ohledu na nastavení maker WINVER apod.

Proč mám pocit, že se se mnou snažíš být za každou cenu v neexistujícím konfliktu? Wink
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 11. březen 2012, 03:31:36    Předmět: Odpovědět s citátem

Souhlas s Ladisem. Zpětná kompatibilita je dost velký luxus a XP SP2 vyšel před cca 6 lety. Kdo by chtěl podporovat dinosauří systémy staré víc jak 6 let? Microsoft by mohl inovovat rychleji, kdyby tu dobu zkrátil ještě víc.

A na závěr dodatek ve stylu Ala: Pravdou je to, co píšu já. Twisted Evil
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 12. březen 2012, 00:24:27    Předmět: Odpovědět s citátem

Crypton napsal:
citace:
To change the project toolset
-In Visual Studio, open the Property Pages for your project. In the left pane, expand Configuration Properties and then select General.

-In the right pane, select Platform Toolset and then select the toolset you want. For example, if you want to compile against the Visual Studio 2008 libraries, select v90.

-Click OK.


Díky, tohle je výborná věc. Smile

Tringiho musím upozornit, že to bohužel pořád nechápe. Tím nastavením, co uvedl Crypton, se změní projekt tak, aby se překládal pomocí překladače VC++2008. Čili už se nepřekládá pomocí VC++2010 - z něj se používá jen to vývojové prostředí. Prostě platí: PROGRAMY PŘELOŽENÉ VE VC++2010 NEJDOU SPUSTIT NA NIČEM STARŠÍM NEŽ XP SP2 ČI 2003 SP1.

Jinak souhlas s Ladisem. Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 12. březen 2012, 08:06:32    Předmět: Odpovědět s citátem

Nemám možnost si ověřit ale je-li to tak, tak to je VC++ pěkně naho*no (pro mnoho různých použití) kompilér.
Mému MinGW nedělá problém cílit libovolné verze MS C runtime knihovny a stále mám možnost využívat všechny nejnovější fičury C++.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
satik



Založen: 06. 05. 2010
Příspěvky: 161
Bydliště: Krkonose

PříspěvekZaslal: 12. březen 2012, 09:41:44    Předmět: Odpovědět s citátem

Al napsal:
PROGRAMY PŘELOŽENÉ VE VC++2010 NEJDOU SPUSTIT NA NIČEM STARŠÍM NEŽ XP SP2 ČI 2003 SP1.


Kdyz uz tu tak slovickaris, tak to aspon napis dobre Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 12. březen 2012, 23:28:48    Předmět: Odpovědět s citátem

Dnes jsem ještě nahodil do virtuálu W98 a tam nejdou spustit ani progrmay přeložené ve VC++2008. Na druhou stranu to jedno demo, co jsem v něm kdysi přeložil a releasnul, si asi nikdo vůbec nestáhl a nespouštěl Wink, protože si na nefunkčnost na W98 nikdo nestěžoval. Cool

MinGW asi bude víc kompatibilní, to věřím, ale jsem už zvyklej na VC++. Asi spíš půjdu Crypton-way. Wink


Naposledy upravil Al dne 13. březen 2012, 00:46:25, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 13. březen 2012, 00:02:56    Předmět: Odpovědět s citátem

Al napsal:
Dnes jsem ještě nahodil do virtuálu W98 a tam nejdou spustit ani progrmay přeložené ve VC++2008. Na druhou stranu to jedno demo, co jsem v něm kdysi přeložil a releasnul, si asi nikdo vůbec nestáhl a nespouštěl Wink, protože si na nefunkčnost na Wíá nikdo nestěžoval. Cool

MinGW asi bude víc kompatibilní, to věřím, ale jsem už zvyklej na VC++. Asi spíš půjdu Crypton-way. Wink


to jsou nejake specialni Windows Donkey Edition? Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3, 4  Další
Strana 1 z 4

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna