Visual C++ Express és a .NET

Visual C++ Express és a .NET
2007-01-12T09:13:10+01:00
2007-01-17T12:50:30+01:00
2022-11-02T22:45:42+01:00
pocokman
Már régóta írok egy játékot Visual C++ Express-ben. Leszedtem hozzá a Platform SDK-t, és azt használom hozzá. Azt hittem, hogy ettől a fordító olyan exe-t fog generálni, amihez nem kell hogy a gépre telepítve legyen a .NET. Ám tegnap átküldtem egy ismerősömnek a programot, hogy kipróbáljuk, viszont az ő gépén el se indult, ilyen hibaüzenet jelent meg neki, hogy: ,,Az alkalmazást nem sikerült elindítani, mert a konfigurációja helytelen. Az alkalmazás újratelepítése megoldhatja a problémát."
Neki nincs .NET a gépén, egy másik ismerősömnek - akinek szintén fent van a gépén a Visual C++ E - viszont ment.
Hogy tudom beállítani úgy a fejlesztőkörnyezetet, hogy NE kelljen .NET-el rendelkeznie annak, aki futtatni akarja a programomat?
Mutasd a teljes hozzászólást!
Helló!

A probléma nem a .NET-tel van hanem azzal hogy az exét debug mode-ban buildelted be. Fent középen láthatsz egy kis comboboxot ami debugon van, ha azt átrakod Releasebe, és úgy buildelsz egyet, akkor kapod meg a release buildet, ami ugy épül fel hogy olyan gépeken is elinduljon, amin nem található meg a C++ és az ilyen-olyan SDK. A solutionödön belül lesz egy Release mappa elvileg azt az exét terjesztve menni fog, de legalább a konfigurációs hibát megszünteti. Remélem segített, jó haladást a progihoz

u.i: Ezt nézd meg szerintem: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/ ez a hivatalos leírás arra hogy jól működjön a platform SDK C++ expressel, mert a sima General empty project nem biztos hogy elég, sőt, viszont ezzel az 1-2 file módosításával a win32 menüpont console application-jén belül elérhető lesz a windows application, plusz benyomod az empty project pipát és akkor az natív win32 lesz, ahogy feljebb is említették, magyarul nem lesz szükség .NETre. Szerintem mindenképp tedd meg, mert lehet később emiatt ütközöl hibába. Sok sikert
Mutasd a teljes hozzászólást!

  • Szia!

    A válasz rövid, és tömör. Ha használod a . NET objektumait, akkor sehogy. Egyébként nem nagy kikötés, hogy fent legyen a .NET framework a célgépen. Már az XP-nek is része.

    Tsao,
    Mizso
    Mutasd a teljes hozzászólást!
  • Hát, az a helyzet, hogy tudtommal nem használ a programom .NET-et...
    Már az XP-nek is része.

    Ez biztos? Két ismerősöm is van, akinek alapból nincs .NET az XP-jén...
    Mutasd a teljes hozzászólást!
  • Milyen projectet választottál induláskor?
    (Ha a Win32 alól indultátl akkor native alkalmazásod lesz. Ha nem akkor viszont managed -> kell a framework még ha egyetlen .NET objektumot sem használsz mert köztes kódra fordul az alkalmazás.)
    Mutasd a teljes hozzászólást!
  • Na, nekem úgy van, hogy a Win32 alatt csak olyan van, hogy
    Win32 Console Application
    A CLR-ből alapból nem választottam, inkább a General-ból választottam az Empty project-et.
    Mutasd a teljes hozzászólást!
  • A .Net az egy managelt környezet több szempontból is olyan mint Java (de azért van sok eltérés is). A lényeg, hogy ha .Net alá fejlesztetted a játékot, akkor mindenképpen szükség lesz egy telepített .Net-re a célgépen a játékod futtatásához.

    A másik meg hogy fentebb írták, hogy az XP-ben van alapból .Net. Na ez nem igaz! A Windows Vista az amiben alapból van .Net 3.0!

    Szóval 2 lehetőség van előtted: vagy átírod natív-ra a játékod (a fordító rögtön futtatható állományt készít) vagy maradsz a .Net managelt kódjánál (szükséges a telepített .Net a futtatáshoz), de ekkor ha Win XP a cél platform mellékeled a 23MB-s .Net 2.0 telepítőcsomagot, ha Vista akkor meg azon már alapból van.

    Amúgy szerintem nem érdemes a félkész játkot natív kódra átírni mert a Microsoft szerint a jövő úgyis a .Net-é lesz
    Mutasd a teljes hozzászólást!
  • Na most lehet, hogy nagyon hülyének fogok tűnni, de megkérdezem:
    Eddig a fordjtóm exe-t generált, tehát ezek szerint már eleve natív a programom? Ha igen, akkor milyen magyarázat lehet még arra, hogy nem indul el egy másik gépen?
    Mutasd a teljes hozzászólást!
  • Az, hogy egy program outputjanak mi a kiterjesztese, az teljesen lenyegtelen.
    Az exe azt jeleni, hogy futtathato alomany... es ha van .net felrakva, akkor futathatod is.

    A file tartalma az, ami meghatarozza, hogy mi a file, és nem a kiterjesztese. (egy doc file-t is atnevezhetsz exe-re, de attol meg nem lesz nativ kód)

    A forditod forditott egy file-t aminek az exe kiterjesztest adta. Amikor elinditod, akkor megkapjaa .net framework, es eldonti a file fejlecebl, hogy az neki szol-e. Ha igen, akkor ertelmezi forditja, futtatja, ha nem akkor tovabb passzolja.

    Ha nincs ,.net kornyezet, akkor az oprendszer probalja futtatni... ha atnevezel egy text file-t exe-re azt is megprobalja lefutattni..
    Mutasd a teljes hozzászólást!
  • Az, hogy exe lesz a kiterjesztése nem jelent semmit, mert ettől még a frameworköt használja.

    Itt jártál már?
    Mutasd a teljes hozzászólást!
  • Igen, azzal kezdtem mikor áttértem erre az IDE-re.
    Mutasd a teljes hozzászólást!
  • Ha végig is csináltad akkor nem tudom mi lehet a nyűgje.
    Feladtam.
    Mutasd a teljes hozzászólást!
  • Na, van egy olyan menüpont, hogy Debug\Attach to Process...

    Valamelyik programhoz a Type mezőbe a Managed, a többséghez az x86 feliratot rakja. Tehát a Managed programok a .NET-esek. Megnéztem ezzel azt a programot azmi az ismerősömnél nem futott: x86-ot írt ki rá.
    Akkor ezek szerint mégse biztos hogy .NET kell neki. Akkor mi hiányozhat még neki? Keres valami más komponenst is?
    Mutasd a teljes hozzászólást!
  • Helló!

    A probléma nem a .NET-tel van hanem azzal hogy az exét debug mode-ban buildelted be. Fent középen láthatsz egy kis comboboxot ami debugon van, ha azt átrakod Releasebe, és úgy buildelsz egyet, akkor kapod meg a release buildet, ami ugy épül fel hogy olyan gépeken is elinduljon, amin nem található meg a C++ és az ilyen-olyan SDK. A solutionödön belül lesz egy Release mappa elvileg azt az exét terjesztve menni fog, de legalább a konfigurációs hibát megszünteti. Remélem segített, jó haladást a progihoz

    u.i: Ezt nézd meg szerintem: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/ ez a hivatalos leírás arra hogy jól működjön a platform SDK C++ expressel, mert a sima General empty project nem biztos hogy elég, sőt, viszont ezzel az 1-2 file módosításával a win32 menüpont console application-jén belül elérhető lesz a windows application, plusz benyomod az empty project pipát és akkor az natív win32 lesz, ahogy feljebb is említették, magyarul nem lesz szükség .NETre. Szerintem mindenképp tedd meg, mert lehet később emiatt ütközöl hibába. Sok sikert
    Mutasd a teljes hozzászólást!
  • Azt még hozzáfűzném, hogy a release buildnek külön beállitásai vannak, nem veszi át a debug mode beállításait, azokat újra be kell lőnöd a project settingsben.
    Mutasd a teljes hozzászólást!
  • Ezt már megtettem, ez a verzió fut az ismerősömnél is. Ám most nálam akadt probléma: Debug-oláskor a Debug\Exceptions menüben bekapcsolok minden pipát, hogy minél több hibát megtalálhassak. F5-el futtatom a programot, és rögtön megjelenik egy ablak, hogy:

    First-chance exception at 0x7c918fea in SpaceShip3.exe: 0xC0000005: Access violation writing location 0x00000010.

    Ha a WinMain első utasítása egy exit(), akkor is ezt kapom. Igaz, a futás közben később nem jön elő probléma, de nem vagyok benne biztos hogy később se... Mi okozhatja ezt? Szinte teljesen kiszedek már mindent a kódból de folyton ezt kapom debug-oláskor. Persze, ha a Continue-ra kattintok akkor simán megy tovább. Ha a Break-re megyek akkor ezt mondja:

    No symbols are loaded for any call stack frame. The source code cannot be displayed.

    Ekkor Show disasemmbly-re bökve egy asm forrást kapok, és a sárga nyíl itt áll meg:
    7C918FEA inc dword ptr [eax+10h]
    Az EAX értéke meg 0.
    Valaki tudja mi okozhatja ezt?
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd