Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste tópico, você pode encontrar informações sobre como portar código C++ existente para a plataforma de aplicativos do Windows, a Plataforma Universal do Windows. O que significa o termo universal é que seu código pode ser executado em qualquer um dos dispositivos que executam o Windows 10 ou posterior. Você cria um único projeto e uma única interface de usuário baseada em XAML que funciona bem em qualquer dispositivo que execute o Windows 10 ou posterior. Você pode usar recursos de layout dinâmico em XAML para permitir que a interface do usuário do aplicativo se adapte a diferentes tamanhos de exibição.
A documentação do Centro de Desenvolvimento do Windows contém um guia para portar aplicativos do Windows 8.1 para a Plataforma Universal do Windows. Consulte Transição do Windows Runtime 8 para UWP. Embora o guia se concentre principalmente no código C#, a maioria das orientações é aplicável ao C++. Os procedimentos a seguir contêm informações mais detalhadas. Consulte também Mover de um aplicativo de desktop para UWP.
Este tópico contém os seguintes procedimentos para portar código para a UWP.
Se você tiver uma DLL Win32 clássica da área de trabalho e quiser chamá-la de um aplicativo UWP, você também pode fazer isso. Usando esses procedimentos, você pode criar uma camada de interface do usuário UWP para um aplicativo C++ clássico da área de trabalho do Windows existente ou seu código C++ padrão de plataforma cruzada. Consulte Como: Usar código C++ existente em um aplicativo da Plataforma Universal do Windows.
Transferência de uma app da Windows Store 8.1 para o UWP
Se você tiver um aplicativo da Windows Store 8.1, poderá usar este procedimento para fazê-lo funcionar na UWP e em qualquer dispositivo que execute o Windows 10 ou posterior. É uma boa ideia primeiro criar o projeto com o Visual Studio 2019 como um projeto do Windows 8.1, para primeiro eliminar quaisquer problemas que surjam de alterações no compilador e nas bibliotecas. Depois de fazer isso, há duas maneiras de converter isso em um projeto UWP do Windows. A maneira mais fácil (conforme explicado no procedimento a seguir) é criar um projeto Universal do Windows e copiar seu código existente para ele. Se você estava usando um projeto Universal para área de trabalho do Windows 8.1 e Windows 8.1 Phone, seu projeto começará com dois layouts diferentes em XAML, mas terminará com um único layout dinâmico que se ajusta ao tamanho da exibição.
Para portar um aplicativo da Windows Store 8.1 para a UWP
Se você ainda não tiver feito isso, abra seu projeto de aplicativo do Windows 8.1 no Visual Studio 2017 e siga as instruções para atualizar o arquivo de projeto.
Você precisa ter instalado as ferramentas do Windows 8.1 na instalação do Visual Studio . Se você não tiver essas ferramentas instaladas, inicie a instalação do Visual Studio na janela Programas e Recursos , escolha Visual Studio 2017 e, na janela de instalação, escolha Modificar. Localize Ferramentas do Windows 8.1, certifique-se de que está selecionado e escolha OK.
Abra a janela Propriedades do projeto e, em C++>General, defina o Platform Toolset como v141, o conjunto de ferramentas do Visual Studio 2017.
Crie o projeto como um projeto do Windows 8.1 e resolva quaisquer erros de compilação. Quaisquer erros nesta fase são provavelmente devidos a alterações incompatíveis nas ferramentas de compilação e bibliotecas. Consulte Histórico de alterações do Visual C++ 2003 - 2015 para obter uma explicação detalhada das alterações que podem afetar seu código.
Depois que seu projeto for compilado corretamente, você estará pronto para fazer a portabilidade para a Plataforma Universal do Windows.
Crie um novo projeto de Aplicação Universal do Windows usando o modelo Blank. Você pode querer dar-lhe o mesmo nome que seu projeto existente, embora para fazer isso os projetos devem estar em diretórios diferentes.
Feche a solução e, em seguida, usando o Windows Explorer ou a linha de comando, copie os arquivos de código (com extensões .cpp, .h e .xaml) do seu projeto do Windows 8.1 para a mesma pasta que o arquivo de projeto (.vcxproj) para o projeto que você criou na etapa 1. Não copie o arquivo Package.appxmanifest e, se você tiver um código separado para desktop e telefone do Windows 8.1, escolha um deles para portar primeiro (você terá que fazer algum trabalho depois para se adaptar ao outro). Certifique-se de copiar as subpastas e seus conteúdos. Se solicitado, opte por substituir todos os arquivos por nomes duplicados.
Reabra a solução e escolha Adicionar>Item Existente no menu de atalho do nó do projeto. Selecione todos os arquivos copiados, exceto aqueles que já fazem parte do projeto.
Verifique todas as subpastas e certifique-se de adicionar os arquivos nelas também.
Se você não estiver usando o mesmo nome de projeto que seu projeto antigo, abra o arquivo Package.appxmanifest e atualize o ponto de entrada para refletir o nome do namespace para a
Appclasse.O campo Ponto de entrada no arquivo Package.appxmanifest contém um nome com escopo para a
Appclasse, que inclui o namespace que contém aAppclasse. Quando você cria um projeto Universal do Windows, o namespace é definido como o nome do projeto. Se isso for diferente do que está nos arquivos que você copiou do seu projeto antigo, você deve atualizar um ou outro para torná-los correspondentes.Crie o projeto e resolva quaisquer erros de compilação devido a incompatibilidades entre as versões diferentes do SDK do Windows.
Execute o projeto na Área de Trabalho Local. Verifique se não há erros de implantação, se o layout do aplicativo parece razoável e se funciona corretamente na área de trabalho.
Se você tinha arquivos de código separados e .xaml para outro dispositivo, como o Windows Phone 8.1, examine esse código e identifique onde ele difere do dispositivo padrão. Se a diferença estiver apenas no layout, você poderá usar um Gerenciador de Estado Visual no xaml para personalizar a exibição dependendo do tamanho da tela. Para outras diferenças, você pode usar seções de condições em seu código usando as instruções #if a seguir.
#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)Essas instruções se aplicam, respectivamente, a aplicativos UWP, aplicativos da Loja do Windows Phone, ambos ou nenhum (somente área de trabalho Win32 clássica). Essas macros só estão disponíveis no Windows SDK 8.1 e posterior, portanto, se o seu código precisa ser compilado com versões anteriores do SDK do Windows ou para outras plataformas além do Windows, você também deve considerar o caso de que nenhuma delas está definida.
Execute e depure o aplicativo em um emulador ou dispositivo físico, para cada tipo de dispositivo compatível com seu aplicativo. Para executar um emulador, você precisa executar o Visual Studio em um computador físico, não em uma máquina virtual.
Migrando um componente do Tempo de Execução do Windows 8.1 para a UWP
Se você tiver uma DLL ou um componente do Tempo de Execução do Windows que já funcione com aplicativos da Windows Store 8.1, poderá usar este procedimento para fazer com que o componente ou a DLL funcione com a UWP no Windows. O procedimento básico é criar um novo projeto e copiar seu código para ele.
Para portar um componente de execução do Windows 8.1 para a UWP
Na caixa de diálogo Novo Projeto no Visual Studio 2017, localize o nó Windows Universal. Se você não vir esse nó, instale o SDK do Windows primeiro. Escolha o modelo de Componente do Tempo de Execução do Windows , dê um nome para o componente e escolha o botão OK . O nome do componente será usado como o nome do namespace, portanto, talvez você queira usar o mesmo nome do namespace dos projetos antigos. Isso requer que você crie o projeto em uma pasta diferente da antiga. Se você escolher um nome diferente, poderá atualizar o nome do namespace nos arquivos de código gerados.
Feche o projeto.
Copie todos os arquivos de código (.cpp, .h, .xaml, etc.) do componente do Windows 8.1 para o projeto recém-criado. Não copie o arquivo Package.appxmanifest.
Crie e resolva quaisquer erros devido a alterações disruptivas entre diferentes versões do SDK do Windows.
Solução de problemas
Você pode encontrar vários erros durante o processo de portabilidade do código para a UWP. Aqui estão alguns dos possíveis problemas que você pode encontrar.
Problemas de configuração do projeto
Você pode receber o erro:
could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable
Se isso acontecer, o projeto não está sendo construído como um projeto Universal do Windows. Verifique o arquivo de projeto e certifique-se de que ele tem os elementos XML corretos que identificam um projeto como um projeto universal do Windows. Os seguintes elementos devem estar presentes (o número da versão da plataforma de destino pode ser diferente):
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10156.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10156.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
Se você criou um novo projeto UWP usando o Visual Studio, você não deve ver esse erro.
Ver também
Guia de portabilidade do Microsoft C++
Desenvolver aplicativos para a Plataforma Universal do Windows (UWP)