Přenos aplikací do Univerzální platformy Windows (C++)

V tomto tématu najdete informace o tom, jak přenést stávající kód C++ na platformu aplikací pro Windows, Univerzální platforma Windows. Pojem univerzální znamená, že váš kód může běžet na libovolném zařízení s Windows 10 nebo novějším. Vytvoříte jeden projekt a jedno uživatelské rozhraní založené na XAML, které dobře funguje na jakémkoli zařízení s Windows 10 nebo novějším. Pomocí funkcí dynamického rozložení v JAZYCE XAML můžete umožnit, aby se uživatelské rozhraní aplikace přizpůsobilo různým velikostem zobrazení.

Dokumentace k Windows Dev Center obsahuje příručku pro přenos aplikací pro Windows 8.1 do Univerzální platforma Windows. Viz Přechod z prostředí Windows Runtime 8 na UPW. Přestože se příručka zaměřuje hlavně na kód jazyka C#, většina pokynů se vztahuje na jazyk C++. Následující postupy obsahují podrobnější informace. Viz také Přechod z desktopové aplikace na UPW.

Toto téma obsahuje následující postupy pro přenos kódu do UPW.

Pokud máte klasickou desktopovou knihovnu Win32 DLL a chcete ji volat z aplikace UPW, můžete to udělat také. Pomocí těchto postupů můžete vytvořit vrstvu uživatelského rozhraní UPW pro existující klasickou desktopovou aplikaci C++ systému Windows nebo kód C++ pro různé platformy. Viz Postupy: Použití existujícího kódu C++ v aplikaci Univerzální platforma Windows.

Přenos aplikace pro Windows 8.1 Store do UPW

Pokud máte aplikaci pro Windows 8.1 Store, můžete pomocí tohoto postupu pracovat na UPW a na všech zařízeních s Windows 10 nebo novějším. Je vhodné nejprve sestavit projekt pomocí sady Visual Studio 2019 jako projektu Windows 8.1, abyste nejprve odstranili všechny problémy, které vznikají ze změn v kompilátoru a knihovnách. Jakmile to uděláte, existují dva způsoby, jak ho převést na projekt UpW pro Windows. Nejjednodušším způsobem (jak je vysvětleno v následujícím postupu) je vytvoření projektu Univerzálního systému Windows a zkopírování existujícího kódu do něj. Pokud jste používali univerzální projekt pro stolní počítače s Windows 8.1 a Windows 8.1 Telefon, bude váš projekt začínat dvěma různými rozloženími v XAML, ale končí jedním dynamickým rozložením, které se přizpůsobí velikosti zobrazení.

Port aplikace pro Windows 8.1 Store do UPW

  1. Pokud jste to ještě neudělali, otevřete projekt aplikace pro Windows 8.1 v sadě Visual Studio 2017 a podle pokynů upgradujte soubor projektu.

    V instalačním programu sady Visual Studio potřebujete nainstalovat nástroje Windows 8.1. Pokud tyto nástroje nemáte nainstalované, spusťte instalaci sady Visual Studio z okna Programy a funkce , zvolte Visual Studio 2017 a v okně nastavení zvolte Upravit. Vyhledejte nástroje systému Windows 8.1, ujistěte se, že je vybrané, a zvolte OK.

  2. Otevřete okno Vlastnosti projektu a v části C++>Obecné nastavte sadu nástrojů platformy na v141, sadu nástrojů pro Visual Studio 2017.

  3. Sestavte projekt jako projekt Windows 8.1 a vyřešte případné chyby sestavení. Jakékoli chyby v této fázi jsou pravděpodobně způsobeny zásadními změnami v nástrojích a knihovnách sestavení. Podrobné vysvětlení změn, které můžou mít vliv na váš kód, najdete v tématu Historie změn v jazyce Visual C++ 2003 – 2015.

    Jakmile se projekt sestaví čistě, můžete se připojit k Univerzální platforma Windows.

  4. Vytvořte nový projekt univerzální aplikace pro Windows pomocí prázdné šablony. Je možné, že ho budete chtít pojmenovat stejně jako váš stávající projekt, i když aby projekty měly být v různých adresářích.

  5. Zavřete řešení a potom pomocí Průzkumníka Windows nebo příkazového řádku zkopírujte soubory kódu (s příponami .cpp, .h a .xaml) z projektu Windows 8.1 do stejné složky jako soubor projektu (.vcxproj) pro projekt, který jste vytvořili v kroku 1. Nekopírujte soubor Package.appxmanifest a pokud máte samostatný kód pro stolní počítač a telefon s Windows 8.1, zvolte jeden z nich pro první port (budete muset později udělat nějakou práci, abyste se přizpůsobili druhé). Nezapomeňte kopírovat a podsložky a jejich obsah. Pokud se zobrazí výzva, zvolte nahrazení všech souborů duplicitními názvy.

  6. Znovu otevřete řešení a v místní nabídce uzlu projektu zvolte Přidat>existující položku. Vyberte všechny soubory, které jste zkopírovali, s výjimkou všech souborů, které jsou již součástí projektu.

    Zkontrolujte všechny podsložky a nezapomeňte do nich také přidat soubory.

  7. Pokud nepoužíváte stejný název projektu jako váš starý projekt, otevřete soubor Package.appxmanifest a aktualizujte vstupní bod tak, aby odrážel název oboru názvů pro App třídu.

    Pole Vstupní bod v souboru Package.appxmanifest obsahuje název oboru třídy App , který zahrnuje obor názvů, který obsahuje App třídu. Při vytváření projektu univerzálního systému Windows je obor názvů nastaven na název projektu. Pokud se liší od souborů, které jste zkopírovali z původního projektu, musíte jednu nebo druhou aktualizovat, aby se shodovaly.

  8. Sestavte projekt a vyřešte případné chyby sestavení kvůli zásadním změnám mezi různými verzemi sady Windows SDK.

  9. Spusťte projekt na místní ploše. Ověřte, že nedošlo k žádným chybám nasazení a že rozložení aplikace vypadá rozumně a že funguje správně na ploše.

  10. Pokud jste měli samostatné soubory kódu a soubor .xaml pro jiné zařízení, například Windows Telefon 8.1, prozkoumejte tento kód a zjistěte, kde se liší od standardního zařízení. Pokud je rozdíl jenom v rozložení, můžete pomocí Správce vizuálního stavu v xaml přizpůsobit zobrazení v závislosti na velikosti obrazovky. V případě jiných rozdílů můžete v kódu použít oddíly podmínek pomocí následujících příkazů #if.

    #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)
    

    Tyto příkazy platí pro aplikace pro UPW, aplikace pro Windows Telefon Store, obojí nebo ani jedno (jenom klasické desktopové prostředí Win32). Tato makra jsou k dispozici pouze v sadě Windows SDK 8.1 a novějších verzích, takže pokud je potřeba kód zkompilovat s dřívějšími verzemi sady Windows SDK nebo pro jiné platformy kromě Windows, měli byste také zvážit případ, kdy není definován žádný z nich.

  11. Spusťte a laďte aplikaci v emulátoru nebo fyzickém zařízení pro každý typ zařízení, které vaše aplikace podporuje. Pokud chcete spustit emulátor, musíte visual Studio spustit na fyzickém počítači, ne na virtuálním počítači.

Přenos komponenty modulu runtime Windows 8.1 do UPW

Pokud máte knihovnu DLL nebo prostředí Windows Runtime komponentu, která už funguje s aplikacemi pro Windows 8.1 Store, můžete pomocí tohoto postupu získat komponentu nebo knihovnu DLL pracující s UPW ve Windows. Základním postupem je vytvoření nového projektu a zkopírování kódu do něj.

Port součásti modulu runtime Windows 8.1 do UPW

  1. V dialogovém okně Nový projekt v sadě Visual Studio 2017 vyhledejte univerzální uzel Windows. Pokud tento uzel nevidíte, nejprve nainstalujte sadu Windows SDK . Zvolte šablonu komponenty prostředí Windows Runtime, zadejte název komponenty a zvolte tlačítko OK. Název komponenty se použije jako název oboru názvů, takže můžete chtít použít stejný název jako obor názvů starých projektů. To vyžaduje, abyste projekt vytvořili v jiné složce než původní. Pokud zvolíte jiný název, můžete aktualizovat název oboru názvů ve vygenerovaných souborech kódu.

  2. Zavřete projekt.

  3. Zkopírujte všechny soubory kódu (.cpp, .h, .xaml atd.) z komponenty Windows 8.1 do nově vytvořeného projektu. Nekopírujte soubor Package.appxmanifest.

  4. Sestavte a vyřešte případné chyby způsobené zásadními změnami mezi různými verzemi sady Windows SDK.

Řešení potíží

Během procesu přenosu kódu do UPW se můžou vyskytnout různé chyby. Tady jsou některé možné problémy, se kterými se můžete setkat.

Problémy s konfigurací projektu

Může se zobrazit chyba:

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

Pokud k tomu dojde, projekt se nestaví jako univerzální projekt Windows. Zkontrolujte soubor projektu a ujistěte se, že obsahuje správné elementy XML, které identifikují projekt jako univerzální projekt windows. Měly by existovat následující prvky (číslo verze cílové platformy se může lišit):

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

Pokud jste pomocí sady Visual Studio vytvořili nový projekt UPW, neměli byste tuto chybu zobrazit.

Viz také

Průvodce portováním v jazyce Visual C++
Vývoj aplikací pro Univerzální platformu Windows (UWP)