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

v tomto tématu najdete informace o tom, jak portovat existující kód C++ pro Windows aplikační platformu, Univerzální platforma Windows. to, co je určeno výrazem univerzální , je, že váš kód může běžet na libovolném ze zařízení, která používají Windows 10 nebo novější. vytvoříte jeden projekt a jedno uživatelské rozhraní v jazyce XAML, které funguje dobře na jakémkoli zařízení, které běží Windows 10 nebo novějším. Funkce dynamického rozložení v jazyce XAML můžete použít k umožnění uživatelského rozhraní aplikace pro přizpůsobení různých velikostí zobrazení.

dokumentace k Windows Dev Center obsahuje průvodce pro přenos Windows 8.1 aplikací do Univerzální platforma Windows. viz přesunout z prostředí Windows Runtime 8 na UWP. I když se příručka zaměřuje hlavně na kód jazyka C#, většina pokynů je platná pro jazyk C++. Následující postupy obsahují podrobnější informace. Přečtěte si také téma Přesun z desktopové aplikace do UWP.

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

Máte-li klasickou knihovnu DLL klasické pracovní plochy a chcete ji volat z aplikace UWP, můžete to provést také. pomocí těchto postupů můžete vytvořit vrstvu uživatelského rozhraní UWP pro existující aplikaci klasického Windows desktop c++ nebo standardní 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 Windows 8.1 storu do UWP

pokud máte aplikaci Windows 8.1 Store, můžete tento postup použít k tomu, abyste mohli pracovat na UWP a na jakémkoli zařízení, které spouští Windows 10 nebo novějším. je vhodné nejdřív sestavit projekt s Visual Studio 2019 jako Windows 8.1 projektu, abyste nejdřív vyloučili všechny problémy, které vznikají ve změnách kompilátoru a knihoven. až to uděláte, existují dva způsoby, jak tuto hodnotu převést na Windows projektu UWP. nejjednodušší způsob (jak je vysvětleno v následujícím postupu) je vytvoření projektu univerzální Windows a zkopírování stávajícího kódu do něj. pokud jste používali univerzální projekt pro Windows 8.1 desktop a Windows 8.1 Telefon, bude projekt začínat dvěma různými rozloženími v jazyce XAML, ale končit jedním dynamickým rozložením, které se přizpůsobí velikosti zobrazení.

postup při portování aplikace Windows 8.1 storu do UWP

  1. pokud jste tak ještě neučinili, otevřete projekt aplikace Windows 8.1 v Visual Studio 2017 a postupujte podle pokynů pro upgrade souboru projektu.

    v instalačním programu Visual Studio musíte nainstalovat nástroje pro Windows 8.1 . pokud tyto nástroje nemáte nainstalované, spusťte instalační program Visual Studio v okně programy a funkce vyberte možnost Visual Studio 2017a v okně nastavení vyberte možnost upravit. najděte Windows 8.1 nástroje, ujistěte se, že je vybraná, a klikněte na OK.

  2. otevřete okno vlastnosti Project a v části obecné C++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 všechny chyby sestavení. Jakékoli chyby v této fázi jsou pravděpodobně způsobeny zásadními změnami v nástrojích sestavení a knihovnách. Podrobné vysvětlení změn, které by mohly mít vliv na váš kód, naleznete v tématu Visual C++ historii změn 2003 – 2015 .

    po vyčištění sestavení projektu jste připraveni na port k Univerzální platforma Windows.

  4. vytvořte nový projekt univerzální aplikace Windows pomocí prázdné šablony. Je možné, že bude mít stejný název jako váš stávající projekt, i když to uděláte, aby projekty byly v různých adresářích.

  5. zavřete řešení a pak pomocí Windows exploreru 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 Windows 8.1 desktop a telefon, vyberte jeden z nich pro první port (budete muset udělat nějakou práci později, abyste se přizpůsobili k druhému). Nezapomeňte zkopírovat a podsložkách a jejich obsah. Po zobrazení výzvy vyberte nahrazení všech souborů duplicitními názvy.

  6. Znovu otevřete řešení a vyberte možnost Přidatexistující položku z místní nabídky uzlu projektu. Vyberte všechny soubory, které jste zkopírovali, s výjimkou těch, které jsou již součástí projektu.

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

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

    Pole vstupního bodu v souboru Package. appxmanifest obsahuje název s oborem pro třídu, která zahrnuje obor názvů obsahující App třídu. při vytváření projektu Universal Windows je obor názvů nastaven na název projektu. Pokud se liší od toho, co se nachází v souborech, které jste zkopírovali z původního projektu, je nutné aktualizovat jeden nebo druhý, aby se shodovaly.

  8. sestavte projekt a vyřešte všechny chyby sestavení z důvodu průlomových změn mezi různými verzemi Windows SDK.

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

  10. pokud jste měli samostatné soubory kódu a. xaml pro jiné zařízení, například Windows Phone 8,1, projděte si tento kód a určete, kde se liší od standardního zařízení. Pokud je rozdíl pouze v rozložení, je možné v jazyce XAML použít správce vizuálního stavu k přizpůsobení zobrazení v závislosti na velikosti obrazovky. Pro jiné rozdíly 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 se vztahují na aplikace pro UWP, aplikace Windows Phone storu, nebo ani žádná (klasická plocha Win32). tato makra jsou k dispozici pouze v Windows SDK 8,1 a novějším, takže pokud váš kód potřebuje kompilovat s dřívějšími verzemi Windows SDK nebo pro jiné platformy kromě Windows, měli byste také vzít v úvahu případ, že není definován žádný z nich.

  11. Spusťte a ladit aplikaci na emulátoru nebo fyzickém zařízení pro každý typ zařízení, které vaše aplikace podporuje. chcete-li spustit emulátor, je nutné spustit Visual Studio na fyzickém počítači, nikoli na virtuálním počítači.

portování komponenty modulu Runtime Windows 8.1 do UWP

máte-li knihovnu dll nebo komponentu prostředí Windows Runtime, která již pracuje s aplikacemi Windows 8.1 Store, můžete tento postup použít k získání komponenty nebo knihovny dll, která pracuje s UWP na Windows. Základní procedura slouží k vytvoření nového projektu a zkopírování kódu do něj.

postup při portování komponenty Windows 8.1 Runtime na UWP

  1. v dialogovém okně nový Project v Visual Studio 2017 vyhledejte uzel Windows Universal . pokud tento uzel nevidíte, nejprve nainstalujte Windows SDK . vyberte šablonu součásti prostředí Windows Runtime , zadejte název své komponenty a klikněte na tlačítko OK . Název komponenty se použije jako název oboru názvů, takže možná budete chtít použít stejný název jako v oboru názvů Old Projects. To vyžaduje, abyste vytvořili projekt v jiné složce než starou. Pokud zvolíte jiný název, můžete aktualizovat název oboru názvů v generovaných souborech kódu.

  2. Zavřete projekt.

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

  4. sestavujte a vyřešte všechny chyby z důvodu zásadních změn mezi různými verzemi Windows SDK.

Řešení potíží

Během procesu přenosu kódu do UWP může dojít k různým chybám. Zde jsou některé možné problémy, se kterými se můžete setkat.

problémy s konfigurací Project

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 nevytváří jako Windows univerzální projekt. zkontrolujte soubor projektu a ujistěte se, že obsahuje správné prvky XML, které identifikují projekt jako Windows univerzální Project. By měly být k dispozici následující elementy (čí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 vytvořili nový projekt UWP pomocí Visual Studio, neměli byste tuto chybu zobrazovat.

Viz také

Průvodce přenosem Visual C++
Vývoj aplikací pro Univerzální platformu Windows (UWP)