Passo a passo: Criando um SDK usando C++

 

Publicado: julho de 2016

Para obter a documentação mais recente do Visual Studio 2017 RC, consulte a documentação do Visual Studio 2017 RC.

Este passo a passo mostra como criar uma nativo C++ biblioteca de matemática SDK, o pacote do SDK como uma extensão do Visual Studio (VSIX) e então usá-lo para criar um aplicativo. Passo a passo é dividida nestas etapas:

Para seguir este passo a passo, você deve instalar o SDK do Visual Studio. Para obter mais informações, consulte Visual Studio SDK.

  1. Na barra de menus, escolha arquivo, novo, projeto.

  2. Na lista de modelos, expanda Visual C++, da Windows Storee, em seguida, selecione o DLL (aplicativos da Windows Store) modelo. No nome , especifique NativeMathe, em seguida, escolha o OK botão.

  3. Atualize NativeMath.h para coincidir com o código a seguir.

    #pragma once
    
    class __declspec(dllexport) BasicMath 
    {
    public:
        BasicMath();
        double add(double firstNumber, double secondNumber);
        double subtract(double firstNumber, double secondNumber);
    };
    

  4. Atualize NativeMath.cpp de acordo com este código:

    // NativeMath.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "pch.h"
    #include "NativeMath.h"
    
    
    BasicMath::BasicMath()
    {
    }
    
    double BasicMath::add(double firstNumber, double secondNumber)
    {
        return firstNumber + secondNumber;
    }
    
    double BasicMath::subtract(double firstNumber, double secondNumber)
    {
        return firstNumber - secondNumber;
    }
    

  5. Em Solution Explorer, abra o menu de atalho para solução 'NativeMath'e, em seguida, escolha adicionar, novo projeto.

  6. Na lista de modelos, expanda Visual C++e, em seguida, selecione o o componente de tempo de execução do Windows modelo. No nome , especifique NativeMathWRTe, em seguida, escolha o OK botão.

  7. Atualize Class1.h de acordo com este código:

    #pragma once
    
    namespace NativeMathWRT
    {
        public ref class BasicMathWinMD sealed
        {
        public:
            BasicMathWinMD(){};
            double multiply(double firstNumber, double secondNumber);
            double divide(double firstNumber, double secondNumber);
        };
    }
    

  8. Atualize Class1.cpp de acordo com este código:

    // Class1.cpp
    #include "pch.h"
    #include "Class1.h"
    
    using namespace NativeMathWRT;
    using namespace Platform;
        
    double BasicMathWinMD::multiply(double firstNumber, double secondNumber)
    {
        return firstNumber * secondNumber;
    }
    
    double BasicMathWinMD::divide(double firstNumber, double secondNumber)
    {
        if(0 == secondNumber) 
            return -1;
    
        return firstNumber / secondNumber;
    }
    

  9. Na barra de menus, escolha criar, Build Solution.

  1. Em Solution Explorer, abra o menu de atalho para solução 'NativeMath'e, em seguida, escolha adicionar, novo projeto.

  2. Na lista de modelos, expanda Visual C#, extensibilidadee, em seguida, selecione pacote VSIX. No nome , especifique NativeMathVSIXe, em seguida, escolha o OK botão.

  3. Quando o designer de manifesto VSIX for exibida, feche-o.

  4. Em Solution Explorer, abra o menu de atalho para source.extension.vsixmanifeste, em seguida, escolha Exibir código.

  5. Use o XML a seguir para substituir o XML existente.

  6. Em Solution Explorer, abra o menu de atalho para o NativeMathVSIX do projeto e escolha adicionar, Novo Item.

  7. Na lista de itens do Visual c#, expanda dadose, em seguida, selecione arquivo XML. No nome , especifique SDKManifest.xmle, em seguida, escolha o OK botão.

  8. Use esse XML para substituir o conteúdo do arquivo:

    <FileList
      Identity = "NativeMathSDK, Version=1.0"
      DisplayName = "Native Math SDK"
      MinVSVersion = "11.0"
      AppliesTo = "WindowsAppContainer + (CSharp | VB | VisualC)">
      <File Reference="NativeMathWRT.winmd" Implementation="NativeMathWRT.dll" />
    </FileList>
    

  9. Em Solution Explorer, no NativeMathVSIX de projeto, crie a estrutura de pastas:

    
    \DesignTime  
          \CommonConfiguration  
                \Neutral  
                      \Include  
          \Debug  
                \x86  
    \Redist  
          \Debug  
                \x86  
    \References  
          \CommonConfiguration  
                \Neutral  
    
    
  10. Em Solution Explorer, abra o menu de atalho para solução 'NativeMath'e, em seguida, escolha Abrir pasta no Explorador de arquivos.

  11. Em Explorador de arquivos, copie \NativeMath\NativeMath.h e, em seguida, em Solution Explorer, no NativeMathVSIX de projeto, cole-o na pasta \DesignTime\CommonConfiguration\Neutral\Include.

    Copie \Debug\NativeMath\NativeMath.lib e, em seguida, cole-o na pasta \DesignTime\Debug\x86.

    Copie \Debug\NativeMath\NativeMath.dll e cole-o na pasta \Redist\Debug\x86.

    Copie DebugNativeMathWRTNativeMathWRT.dll e cole-o na pasta RedistDebugx86.

    Copie DebugNativeMathWRTNativeMathWRT.winmd e cole-o na pasta ReferencesCommonConfigurationNeutral.

    Copie DebugNativeMathWRTNativeMathWRT.pri e cole-o na pasta ReferencesCommonConfigurationNeutral.

  12. Na pasta \DesignTime\Debug\x86, crie um arquivo de texto chamado NativeMathSDK.props e, em seguida, cole o seguinte conteúdo nele:

  13. Na barra de menus, escolha exibição, outras janelas, janela propriedades (teclado: escolha a tecla F4).

  14. Em Solution Explorer, selecione o NativeMathWRT.winmd arquivo. No propriedades janela, alterar o Build Action propriedade conteúdoe altere o incluir na VSIX propriedade True.

    Repita esse processo para o SimpleMath.pri arquivo.

    Repita esse processo para o NativeMath.Lib arquivo.

    Repita esse processo para o NativeMathSDK.props arquivo.

  15. Em Solution Explorer, selecione o NativeMath.h arquivo. No propriedades janela, alterar o incluir na VSIX propriedade True.

    Repita esse processo para o NativeMath.dll arquivo.

    Repita esse processo para o NativeMathWRT.dll arquivo.

    Repita esse processo para o Sdkmanifest arquivo.

  16. Na barra de menus, escolha criar, Build Solution.

  17. Em Solution Explorer, abra o menu de atalho para o NativeMathVSIX do projeto e escolha Abrir pasta no Explorador de arquivos.

  18. Em File Explorer, navegue até a pasta \bin\Debug\ e execute NativeMathVSIX.vsix para iniciar a instalação.

  19. Escolha o instalar botão, aguarde concluir a instalação e reinicie o Visual Studio.

  1. Na barra de menus, escolha arquivo, novo, projeto.

  2. Na lista de modelos, expanda Visual C++, da Windows Storee, em seguida, selecione aplicativo em branco. No nome , especifique NativeMathSDKSamplee, em seguida, escolha o OK botão.

  3. Em Solution Explorer, abra o menu de atalho para o NativeMathSDKSample do projeto e escolha adicionar, referência.

  4. Sobre o propriedades comuns, estrutura e referências página de propriedades, na lista de tipos de referência, expanda Windowse, em seguida, selecione extensões. No painel de detalhes, selecione a nativo SDK matemática extensão e, em seguida, escolha o adicionar nova referência botão.

  5. No adicionar referência caixa de diálogo, selecione o nativo SDK matemática caixa de seleção e, em seguida, escolha o OK botão.

  6. Exiba as propriedades de projeto NativeMathSDKSample.

    As propriedades que você definiu no NativeMathSDK.props foram aplicadas ao adicionar a referência. Você pode verificar isso examinando o diretórios VC + + propriedade do projeto propriedades de configuração.

  7. Em Solution Explorer, abra MainPage. XAML e, em seguida, usar o XAML a seguir para substituir seu conteúdo:

    <Page
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:NativeMathSDKSample"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        x:Class="NativeMathSDKSample.MainPage"
        IsTabStop="false"
        mc:Ignorable="d">
    
        <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
            <TextBox x:Name="FirstNumber" HorizontalAlignment="Left" Margin="327,123,0,0" TextWrapping="Wrap" Text="1" VerticalAlignment="Top" Height="84" Width="259" FontSize="48"/>
            <TextBox x:Name="SecondNumber" HorizontalAlignment="Left" Margin="687,123,0,0" TextWrapping="Wrap" Text="1" VerticalAlignment="Top" Height="84" Width="271" FontSize="48"/>
            <Button x:Name="Execute" Content="=" HorizontalAlignment="Left" Margin="478,387,0,0" VerticalAlignment="Top" Height="63" Width="332" Click="Execute_Click"/>
            <RadioButton Name="add" Content="Add" HorizontalAlignment="Left" Margin="273,262,0,0" VerticalAlignment="Top" GroupName="Operation" IsChecked="True"/>
            <RadioButton Name="subtract" Content="Subtract" HorizontalAlignment="Left" Margin="453,262,0,0" VerticalAlignment="Top" GroupName="Operation" IsChecked="False"/>
            <RadioButton Name="multiplyWRT" Content="Multiply(WRT)" HorizontalAlignment="Left" Margin="615,262,0,0" VerticalAlignment="Top" GroupName="Operation" IsChecked="False"/>
            <RadioButton Name="divideWRT" Content="Divide(WRT)" HorizontalAlignment="Left" Margin="891,262,0,0" VerticalAlignment="Top" GroupName="Operation" IsChecked="False"/>
            <TextBlock Name="resultText" HorizontalAlignment="Left" Margin="478,525,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="332" Height="70" FontSize="48"/>
        </Grid>
    </Page>
    

  8. Atualize Mainpage.xaml.h de acordo com este código:

    //
    // MainPage.xaml.h
    // Declaration of the MainPage class.
    //
    
    #pragma once
    
    #include "MainPage.g.h"
    
    namespace NativeMathSDKSample
    {
        /// <summary>
        /// An empty page that can be used on its own or navigated to within a Frame.
        /// </summary>
        public ref class MainPage sealed
        {
        public:
            MainPage();
    
        protected:
            virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
            virtual void Execute_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
        };
    }
    

  9. Atualize MainPage.xaml.cpp de acordo com este código:

    //
    // MainPage.xaml.cpp
    // Implementation of the MainPage class.
    //
    
    #include "pch.h"
    #include "MainPage.xaml.h"
    
    #include <sstream>
    
    #include "NativeMath.h"
    
    using namespace NativeMathSDKSample;
    
    using namespace Platform;
    using namespace Windows::Foundation;
    using namespace Windows::Foundation::Collections;
    using namespace Windows::UI::Xaml;
    using namespace Windows::UI::Xaml::Controls;
    using namespace Windows::UI::Xaml::Controls::Primitives;
    using namespace Windows::UI::Xaml::Data;
    using namespace Windows::UI::Xaml::Input;
    using namespace Windows::UI::Xaml::Media;
    using namespace Windows::UI::Xaml::Navigation;
    
    using namespace NativeMathWRT;
    
    // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
    
    MainPage::MainPage()
    {
        InitializeComponent();
    }
    
    /// <summary>
    /// Invoked when this page is about to be displayed in a Frame.
    /// </summary>
    /// <param name="e">Event data that describes how this page was reached.  The Parameter
    /// property is typically used to configure the page.</param>
    void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
    {
    }
    
    void NativeMathSDKSample::MainPage::Execute_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
    {
        double iFirstNumber = _wtof(FirstNumber->Text->Data());
        double iSecondNumber = _wtof(SecondNumber->Text->Data());
        double result = 0;
    
        BasicMathWinMD^ basicMathWinMD = ref new BasicMathWinMD();
        BasicMath basicMath;
    
        if(add->IsChecked->Value == true)
        {
            result = basicMath.add(iFirstNumber, iSecondNumber);
        }
        else if(subtract->IsChecked->Value == true)
        {
            result = basicMath.subtract(iFirstNumber, iSecondNumber);
        }
        else if(multiplyWRT->IsChecked->Value == true)
        {
            result = basicMathWinMD->multiply(iFirstNumber, iSecondNumber);
        }
        else if (divideWRT->IsChecked->Value == true)
        {
            result = basicMathWinMD->divide(iFirstNumber, iSecondNumber);
        }
    
        std::wstringstream s;
        s << result;
    
        resultText->Text = ref new String(s.str().c_str());
    
    }
    

  10. Escolha a tecla F5 para executar o aplicativo.

  11. No aplicativo, digite os dois números, selecione uma operação e, em seguida, escolha o ** = ** botão.

    O resultado correto é exibido.

Este passo a passo mostrou como criar e usar um SDK de extensão para chamar um Tempo de Execução do Windows biblioteca e nãoTempo de Execução do Windows biblioteca.

Passo a passo: Criando um SDK usando c# ou Visual Basic
Criando um Kit de desenvolvimento de Software

Mostrar: