Megosztás a következőn keresztül:


Portolás az univerzális Windows platformra (C++)

Ebben a témakörben a meglévő C++ kód windowsos alkalmazásplatformra, az Univerzális Windows Platformra történő portjára vonatkozó információkat talál. Az univerzális kifejezés azt jelenti, hogy a kód bármely Windows 10-et vagy újabb rendszert futtató eszközön futtatható. Egyetlen projektet és egyetlen XAML-alapú felhasználói felületet hozhat létre, amely jól működik a Windows 10 vagy újabb rendszerű eszközökön. Az XAML dinamikus elrendezési funkcióival lehetővé teheti, hogy az alkalmazás felhasználói felülete alkalmazkodjon a különböző megjelenítési méretekhez.

A Windows Dev Center dokumentációja útmutatót tartalmaz a Windows 8.1-alkalmazások univerzális Windows-platformra történő átviteléhez. Lásd: Áthelyezés a Windows Runtime 8-ról UWP-be. Bár az útmutató elsősorban a C#-kódra összpontosít, az útmutató nagy része a C++-ra is alkalmazható. Az alábbi eljárások részletesebb információkat tartalmaznak. Lásd még : Áthelyezés asztali alkalmazásból UWP-be.

Ez a témakör a következő eljárásokat tartalmazza a kód UWP-be történő átviteléhez.

Ha rendelkezik egy klasszikus asztali Win32 DLL-sel, és UWP-alkalmazásból szeretné meghívni, ezt is megteheti. Ilyen eljárásokkal létrehozhat egy UWP felhasználói felületi réteget egy meglévő klasszikus Windows asztali C++ alkalmazáshoz vagy a platformfüggetlen standard C++ kódhoz. Lásd : Meglévő C++ kód használata univerzális Windows platformalkalmazásban.

Windows 8.1 Áruházbeli alkalmazás portolása az UWP-be

Ha Windows 8.1 Áruházbeli alkalmazással rendelkezik, ezzel az eljárással dolgozhat az UWP-n és a Windows 10 vagy újabb rendszerű eszközökön. Érdemes először a Visual Studio 2019-et Windows 8.1-projektként felépíteni, hogy először kiküszöböljük a fordítóban és a kódtárakban bekövetkezett változásokból eredő problémákat. Ezt követően kétféleképpen alakíthatja át ezt Windows UWP-projektté. A legegyszerűbben (az alábbi eljárásban leírtak szerint) egy univerzális Windows-projektet hozhat létre, és a meglévő kódot belemásolhatja. Ha univerzális projektet használt windows 8.1 asztali és Windows 8.1 Phone rendszerhez, a projekt két különböző elrendezéssel fog kezdődni az XAML-ben, de egyetlen dinamikus elrendezéssel végződik, amely a megjelenítési mérethez igazodik.

A Windows 8.1 Áruházi alkalmazás átalakítása UWP-re

  1. Ha még nem tette meg, nyissa meg a Windows 8.1 Alkalmazásprojektet a Visual Studio 2017-ben, és kövesse az utasításokat a projektfájl frissítéséhez.

    Telepítenie kell a Windows 8.1-eszközöket a Visual Studio telepítőjében . Ha nincsenek telepítve ezek az eszközök, indítsa el a Visual Studio telepítőjét a Programok és szolgáltatások ablakban, válassza a Visual Studio 2017 lehetőséget, majd a beállítási ablakban válassza a Módosítás lehetőséget. Keresse meg a Windows 8.1-eszközöket, győződjön meg arról, hogy ki van jelölve, és kattintson az OK gombra.

  2. Nyissa meg a Projekttulajdonságok ablakot, és a C++>Általános területen állítsa a Platformeszközöketa Visual Studio 2017 eszközkészletének 141-be.

  3. A projektet Windows 8.1-projektként hozhatja létre, és elháríthatja a buildelési hibákat. Ebben a szakaszban valószínűleg a fejlesztési eszközök és kódtárak olyan módosításai okoznak hibákat, amelyek megszakítják a kompatibilitást. A 2003–2015-ös Visual C++ változáselőzményekben részletes magyarázatot talál a kódra esetlegesen hatással lévő változásokról.

    Miután a projekt teljesen elkészült, készen áll az univerzális Windows platformra való portálásra.

  4. Hozzon létre egy új Univerzális Windows-alkalmazásprojektet az Üres sablonnal. Érdemes lehet ugyanazt a nevet adni neki, mint a meglévő projektnek, bár ehhez a projekteknek különböző könyvtárakban kell lenniük.

  5. Zárja be a megoldást, majd a Windows Intéző vagy a parancssor használatával másolja a kódfájlokat (.cpp, .h és .xaml kiterjesztéssel) a Windows 8.1-es projektből ugyanabba a mappába, mint az 1. lépésben létrehozott projekt projektfájlja (.vcxproj). Ne másolja a Package.appxmanifest fájlt, és ha külön kóddal rendelkezik az asztali Windows 8.1-hez és a telefonhoz, válasszon egyet közülük, hogy előbb portoljon (később meg kell dolgoznia, hogy alkalmazkodjon a másikhoz). Mindenképpen másolja az almappákat és azok tartalmát. Ha a rendszer kéri, válassza a fájlok duplikált nevekre való cseréjét.

  6. Nyissa meg újra a megoldást, és válassza a Projektcsomópont helyi menüjében aMeglévő elem> lehetőséget. Jelölje ki az összes másolt fájlt, kivéve azokat, amelyek már részei a projektnek.

    Ellenőrizze az almappákat, és győződjön meg arról, hogy a fájlokat is hozzáadja hozzájuk.

  7. Ha nem ugyanazt a projektnevet használja, mint a régi projekt, nyissa meg a Package.appxmanifest fájlt, és frissítse a Belépési pontot , hogy az tükrözze az osztály névterének App nevét.

    A Package.appxmanifest fájl Belépési pont mezője az osztály hatókörrel rendelkező nevét App tartalmazza, amely tartalmazza az App osztályt tartalmazó névteret. Univerzális Windows-projekt létrehozásakor a névtér a projekt nevére van állítva. Ha ez eltér a régi projektből másolt fájlokétól, frissítenie kell az egyiket vagy a másikat, hogy azok egyezzenek.

  8. Hozza létre a projektet, és kezelje a Windows SDK különböző verziói közötti kompatibilitástörő változások miatti buildelési hibákat.

  9. Futtassa a projektet a helyi számítógépen. Ellenőrizze, hogy nincsenek-e üzembehelyezési hibák, és hogy az alkalmazás elrendezése ésszerűnek tűnik-e, és hogy megfelelően működik-e az asztalon.

  10. Ha külön kódfájlokkal és .xaml-fájlokkal rendelkezett egy másik eszközhöz, például a Windows Phone 8.1-hez, vizsgálja meg ezt a kódot, és állapítsa meg, hogy hol különbözik a standard eszköztől. Ha a különbség csak az elrendezésben van, előfordulhat, hogy az xaml-ben egy Visual State Managerrel testre szabhatja a megjelenítést a képernyő méretétől függően. Egyéb különbségek esetén a kód feltételek szakaszait az alábbi #if utasítások használatával használhatja.

    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PC_APP)
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    

    Ezek az utasítások az UWP-alkalmazásokra, a Windows Phone Áruházbeli alkalmazásokra, mindkettőre vagy egyikre sem vonatkoznak (csak a klasszikus Win32 asztali verzióra). Ezek a makrók csak a Windows SDK 8.1-ben és újabb verzióiban érhetők el, ezért ha a kódot a Windows SDK korábbi verzióival vagy a Windowson kívüli más platformokra kell lefordítania, akkor azt is figyelembe kell vennie, hogy egyik sem van definiálva.

  11. Futtassa és végezzen hibakeresést az alkalmazáson emulátoron vagy fizikai eszközön, minden az alkalmazás által támogatott eszköztípus esetén. Emulátor futtatásához a Visual Studiót fizikai számítógépen kell futtatnia, nem virtuális gépen.

Windows 8.1 futtatókörnyezeti összetevő portolása az UWP-be

Ha olyan DLL-t vagy Windows futtatókörnyezeti összetevőt használ, amely már működik a Windows 8.1 Áruházbeli alkalmazásokkal, ezzel az eljárással lekérheti az összetevőt vagy a DLL-t a Windows UWP-vel való együttműködésére. Az alapvető eljárás egy új projekt létrehozása és a kód másolása.

Windows 8.1 futtatókörnyezeti összetevő portja az UWP-be

  1. A Visual Studio 2017 Új projekt párbeszédpaneljén keresse meg a Windows Univerzális csomópontot. Ha nem látja ezt a csomópontot, először telepítse a Windows SDK-t . Válassza ki a Windows futtatókörnyezeti összetevő sablont, adjon nevet az összetevőnek, és válassza az OK gombot. Az összetevő neve lesz a névtér neve, ezért érdemes lehet ugyanazt a nevet használni, mint a régi projektek névterét. Ehhez a projektet a régitől eltérő mappában kell létrehoznia. Ha másik nevet választ, frissítheti a névtér nevét a létrehozott kódfájlokban.

  2. Zárja be a projektet.

  3. Másolja az összes kódfájlt (.cpp, .h, .xaml stb.) a Windows 8.1-összetevőből az újonnan létrehozott projektbe. Ne másolja a Package.appxmanifest fájlt.

  4. A Windows SDK különböző verziói közötti kompatibilitástörő változások miatti hibák létrehozása és megoldása.

Hibaelhárítás

A kód UWP-be történő átvitele során különböző hibák fordulhatnak elő. Az alábbiakban néhány lehetséges problémát talál.

Projektkonfigurációs problémák

A következő hibaüzenet jelenhet meg:

could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable

Ha ez történik, a projekt nem windowsos univerzális projektként készül. Ellenőrizze a projektfájlt, és győződjön meg arról, hogy a megfelelő XML-elemekkel rendelkezik, amelyek windowsos univerzális projektként azonosítják a projektet. A következő elemeknek kell szerepelnie (a célplatform verziószáma eltérő lehet):

<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10156.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10156.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>

Ha új UWP-projektet hozott létre a Visual Studióval, nem jelenik meg ez a hiba.

Lásd még

Microsoft C++ portolási útmutató
Alkalmazások fejlesztése az Univerzális Windows Platform (UWP) számára