Delen via


Overzetten naar het Universal Windows Platform (C++)

In dit onderwerp vindt u informatie over het overzetten van bestaande C++-code naar het Windows-app-platform, het Universal Windows-platform. Wat wordt bedoeld door de term universeel is dat uw code kan worden uitgevoerd op een van de apparaten met Windows 10 of hoger. U maakt één project en één XAML-gebruikersinterface die goed werkt op elk apparaat met Windows 10 of hoger. U kunt dynamische indelingsfuncties in XAML gebruiken om de gebruikersinterface van de app aan te passen aan verschillende weergavegrootten.

De documentatie van het Windows-ontwikkelaarscentrum bevat een handleiding voor het overzetten van Windows 8.1-apps naar het Universeel Windows-platform. Zie Overstappen van Windows Runtime 8 naar UWP. Hoewel de handleiding voornamelijk gericht is op C#-code, zijn de meeste richtlijnen van toepassing op C++. De volgende procedures bevatten gedetailleerdere informatie. Zie ook Overstappen van een bureaubladtoepassing naar UWP.

Dit onderwerp bevat de volgende procedures voor het overzetten van code naar uwP.

Als u een klassieke Win32-DLL van het bureaublad hebt en deze wilt aanroepen vanuit een UWP-toepassing, kunt u dat ook doen. Met dergelijke procedures kunt u een UWP-gebruikersinterfacelaag maken voor een bestaande klassieke Windows-bureaublad-C++-toepassing of uw platformoverschrijdende standaard C++-code. Zie Procedure: Bestaande C++-code gebruiken in een Universele Windows-platform-app.

Een Windows 8.1 Store-app overzetten naar uwP

Als u een Windows 8.1 Store-app hebt, kunt u deze procedure gebruiken om deze te laten werken op uwP en elk apparaat waarop Windows 10 of hoger wordt uitgevoerd. Het is een goed idee om eerst het project te bouwen met Visual Studio 2019 als een Windows 8.1-project, om eerst eventuele problemen op te lossen die voortvloeien uit wijzigingen in de compiler en bibliotheken. Zodra u dat hebt gedaan, kunt u dit op twee manieren converteren naar een Windows UWP-project. De eenvoudigste manier (zoals uitgelegd in de volgende procedure) is het maken van een Universeel Windows-project en het kopiëren van uw bestaande code. Als u een universeel project voor Windows 8.1 desktop en Windows 8.1 Phone gebruikt, begint uw project met twee verschillende indelingen in XAML, maar eindigt met één dynamische indeling die wordt aangepast aan de weergavegrootte.

Een Windows 8.1 Store-app overzetten naar uwP

  1. Als u dit nog niet hebt gedaan, opent u uw Windows 8.1 App-project in Visual Studio 2017 en volgt u de instructies om het projectbestand bij te werken.

    U moet de Windows 8.1-hulpprogramma's hebben geïnstalleerd in de installatie van Visual Studio . Als u deze hulpprogramma's niet hebt geïnstalleerd, start u de installatie van Visual Studio vanuit het venster Programma's en onderdelen , kiest u Visual Studio 2017 en kiest u Wijzigen in het installatievenster. Zoek Windows 8.1-hulpprogramma's, zorg ervoor dat deze is geselecteerd en kies OK.

  2. Open het venster Projecteigenschappen en stel onder C++>Algemeen de platformhulpprogramma'set in op v141, de toolset voor Visual Studio 2017.

  3. Bouw het project als een Windows 8.1-project en los eventuele buildfouten op. Eventuele fouten in deze fase zijn waarschijnlijk te wijten aan ingrijpende wijzigingen in de bouwtools en -bibliotheken. Zie visual C++ wijzigingsgeschiedenis 2003 - 2015 voor een gedetailleerde uitleg van de wijzigingen die van invloed kunnen zijn op uw code.

    Zodra uw project op schone wijze is gebouwd, bent u klaar om over te gaan naar universeel Windows-platform.

  4. Maak een nieuw Universeel Windows-app-project met behulp van de lege sjabloon. Misschien wilt u deze dezelfde naam geven als uw bestaande project, maar hiervoor moeten de projecten zich in verschillende mappen bevinden.

  5. Sluit de oplossing en kopieer met Behulp van Windows Verkenner of de opdrachtregel de codebestanden (met extensies .cpp, .h en .xaml) uit uw Windows 8.1-project in dezelfde map als het projectbestand (.vcxproj) voor het project dat u in stap 1 hebt gemaakt. Kopieer het bestand Package.appxmanifest niet en als u aparte code hebt voor Windows 8.1 desktop en telefoon, kies dan eerst een van deze om te migreren (u moet later nog werk verrichten om deze aan de andere aan te passen). Zorg ervoor dat u de submappen en hun inhoud kopieert. Als u hierom wordt gevraagd, kiest u ervoor om bestanden te vervangen door dubbele namen.

  6. Open de oplossing opnieuw en kiesBestaand item> in het snelmenu voor het projectknooppunt. Selecteer alle bestanden die u hebt gekopieerd, behalve bestanden die al deel uitmaken van het project.

    Controleer alle submappen en zorg ervoor dat u ook de bestanden erin toevoegt.

  7. Als u niet dezelfde projectnaam gebruikt als uw oude project, opent u het bestand Package.appxmanifest en werkt u het toegangspunt bij om de naamruimtenaam voor de App klasse weer te geven.

    Het invoerpuntveld in het bestand Package.appxmanifest bevat een bereiknaam voor de App klasse, die de naamruimte bevat die de App klasse bevat. Wanneer u een Universeel Windows-project maakt, wordt de naamruimte ingesteld op de naam van het project. Als dit verschilt van de bestanden die u hebt gekopieerd uit uw oude project, moet u een of meer bestanden bijwerken om ze overeen te laten komen.

  8. Bouw het project en los eventuele bouwfouten op als gevolg van brekende veranderingen tussen de verschillende versies van de Windows SDK.

  9. Voer het project uit op de desktop. Controleer of er geen implementatiefouten zijn en of de indeling van de app er redelijk uitziet en of deze correct werkt op het bureaublad.

  10. Als u afzonderlijke codebestanden en .xaml voor een ander apparaat hebt, zoals Windows Phone 8.1, bekijkt u deze code en identificeert u waar deze verschilt van het standaardapparaat. Als het verschil zich alleen in de indeling bevindt, kunt u mogelijk een Visual State Manager in de xaml gebruiken om de weergave aan te passen, afhankelijk van de grootte van het scherm. Voor andere verschillen kunt u voorwaardensecties in uw code gebruiken met behulp van de volgende #if instructies.

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

    Deze uitspraken zijn respectievelijk van toepassing op UWP-apps, Windows Phone Store-apps, beide of geen van beiden (alleen klassieke Win32-desktopapps). Deze macro's zijn alleen beschikbaar in Windows SDK 8.1 en hoger, dus als uw code moet worden gecompileerd met eerdere versies van de Windows SDK of voor andere platforms naast Windows, moet u ook rekening houden met het geval dat geen van deze macro's is gedefinieerd.

  11. Voer de app uit en debug de app op een emulator of fysiek apparaat, voor elk type apparaat dat door uw app wordt ondersteund. Als u een emulator wilt uitvoeren, moet u Visual Studio uitvoeren op een fysieke computer, niet op een virtuele machine.

Een Windows 8.1 Runtime-onderdeel overzetten naar uwP

Als u een DLL of een Windows Runtime-onderdeel hebt dat al werkt met Windows 8.1 Store-apps, kunt u deze procedure gebruiken om het onderdeel of DLL te laten werken met de UWP in Windows. De basisprocedure is het maken van een nieuw project en het kopiëren van uw code.

Een Windows 8.1 Runtime-onderdeel overzetten naar uwP

  1. Zoek in het dialoogvenster Nieuw project in Visual Studio 2017 het universele Windows-knooppunt . Als u dit knooppunt niet ziet, installeert u eerst de Windows SDK . Kies de sjabloon Windows Runtime-onderdeel , geef een naam op voor uw onderdeel en kies de knop OK . De naam van het onderdeel wordt gebruikt als de naamruimtenaam, dus u wilt mogelijk dezelfde naam gebruiken als de naamruimte van uw oude projecten. Hiervoor moet u het project in een andere map maken dan in de oude map. Als u een andere naam kiest, kunt u de naamruimtenaam bijwerken in de gegenereerde codebestanden.

  2. Sluit het project.

  3. Kopieer alle codebestanden (.cpp, .h, .xaml, enzovoort) van uw Windows 8.1-onderdeel naar het zojuist gemaakte project. Kopieer het bestand Package.appxmanifest niet.

  4. Bouw en los alle fouten op die ontstaan door brekende wijzigingen tussen de verschillende versies van de Windows SDK.

Probleemoplossingsproces

Er kunnen verschillende fouten optreden tijdens het proces van het overzetten van code naar uwP. Hier volgen enkele mogelijke problemen die u kunt tegenkomen.

Problemen met projectconfiguratie

Mogelijk verschijnt de volgende foutmelding:

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

Als dit gebeurt, wordt het project niet gebouwd als een Universeel Windows-project. Controleer het projectbestand en zorg ervoor dat het de juiste XML-elementen bevat die een project identificeren als een Universeel Windows-project. De volgende elementen moeten aanwezig zijn (het versienummer van het doelplatform kan afwijken):

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

Als u een nieuw UWP-project hebt gemaakt met Visual Studio, ziet u deze fout niet.

Zie ook

Handleiding voor overzetten van Microsoft C++
Apps ontwikkelen voor het UWP- (Universal Windows Platform)