Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku pokazano, jak utworzyć natywny zestaw SDK biblioteki matematycznej języka C++, spakować zestaw SDK jako rozszerzenie programu Visual Studio (VSIX), a następnie użyć go do utworzenia aplikacji. Przewodnik jest podzielony na następujące kroki:
Aby utworzyć biblioteki natywne i środowisko wykonawcze systemu Windows
Aby utworzyć przykładową aplikację korzystającą z biblioteki klas
Wymagania wstępne
Aby wykonać czynności opisane w tym przewodniku, należy zainstalować zestaw Visual Studio SDK. Aby uzyskać więcej informacji, zobacz Visual Studio SDK.
Aby utworzyć biblioteki natywne i środowisko wykonawcze systemu Windows
Na pasku menu wybierz pozycję Plik>nowy>projekt.
Na liście szablonów rozwiń węzeł Visual C++>Windows Universal, a następnie wybierz szablon DLL (aplikacje uniwersalne systemu Windows). W polu Nazwa określ
NativeMathwartość , a następnie wybierz przycisk OK .Zaktualizuj plik NativeMath.h , aby był zgodny z poniższym kodem.
#pragma once class __declspec(dllexport) BasicMath { public: BasicMath(); double add(double firstNumber, double secondNumber); double subtract(double firstNumber, double secondNumber); };Zaktualizuj plik NativeMath.cpp , aby był zgodny z tym kodem:
// 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; }W Eksplorator rozwiązań otwórz menu skrótów rozwiązania "NativeMath", a następnie wybierz pozycję Dodaj>nowy projekt.
Na liście szablonów rozwiń węzeł Visual C++, a następnie wybierz szablon środowisko wykonawcze systemu Windows Składnik. W polu Nazwa określ
NativeMathWRTwartość , a następnie wybierz przycisk OK .Zaktualizuj klasę Class1.h , aby pasować do tego kodu:
#pragma once namespace NativeMathWRT { public ref class BasicMathWinMD sealed { public: BasicMathWinMD(){}; double multiply(double firstNumber, double secondNumber); double divide(double firstNumber, double secondNumber); }; }Zaktualizuj klasę Class1.cpp , aby dopasować ten kod:
// 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; }Na pasku menu wybierz pozycję Kompiluj rozwiązanie kompilacji>.
Aby utworzyć projekt rozszerzenia NativeMathVSIX
W Eksplorator rozwiązań otwórz menu skrótów rozwiązania "NativeMath", a następnie wybierz pozycję Dodaj>nowy projekt.
Na liście szablonów rozwiń węzeł Visual C#>Rozszerzalność, a następnie wybierz pozycję Projekt VSIX. W polu Nazwa określ wartość NativeMathVSIX, a następnie wybierz przycisk OK .
W Eksplorator rozwiązań otwórz menu skrótów dla pliku source.extension.vsixmanifest, a następnie wybierz pozycję Wyświetl kod.
Użyj następującego kodu XML, aby zastąpić istniejący kod XML.
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011"> <Metadata> <Identity Id="NativeMathVSIX..c6b3cae1-e7e2-4e71-90f6-21017ea0dff7" Version="1.0" Language="en-US" Publisher="MyName" /> <DisplayName>Native Math SDK</DisplayName> <Description>Native Math Library w/ Windows Runtime Additions</Description> </Metadata> <Installation Scope="Global" AllUsers="true"> <InstallationTarget Id="Microsoft.ExtensionSDK" TargetPlatformIdentifier="Windows" TargetPlatformVersion="v8.0" SdkName="NativeMathSDK" SdkVersion="1.0" /> </Installation> <Dependencies> </Dependencies> <Assets> <Asset Type="Microsoft.ExtensionSDK" d:Source="File" Path="SDKManifest.xml" /> </Assets> </PackageManifest>W Eksplorator rozwiązań otwórz menu skrótów dla projektu NativeMathVSIX, a następnie wybierz pozycję Dodaj>nowy element.
Na liście elementów Visual C# rozwiń węzeł Dane, a następnie wybierz pozycję Plik XML. W polu Nazwa określ
SDKManifest.xmlwartość , a następnie wybierz przycisk OK .Użyj tego kodu XML, aby zastąpić zawartość pliku:
<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>W Eksplorator rozwiązań w projekcie NativeMathVSIX utwórz następującą strukturę folderów:
\DesignTime \CommonConfiguration \Neutral \Include \Debug \x86 \Redist \Debug \x86 \References \CommonConfiguration \NeutralW Eksplorator rozwiązań otwórz menu skrótów rozwiązania "NativeMath", a następnie wybierz pozycję Otwórz folder w Eksplorator plików.
W Eksplorator plików skopiuj $SolutionRoot$\NativeMath\NativeMath.h, a następnie w Eksplorator rozwiązań w projekcie NativeMathVSIX wklej go w folderze $SolutionRoot$\NativeMathVSIX\DesignTime\CommonConfiguration\Neutral\Include\.
Skopiuj $SolutionRoot$\Debug\NativeMath\NativeMath.lib, a następnie wklej go w folderze $SolutionRoot$\NativeMathVSIX\DesignTime\Debug\x86\ .
Skopiuj $SolutionRoot$\Debug\NativeMath\NativeMath.dll i wklej go w folderze $SolutionRoot$\NativeMathVSIX\Redist\Debug\x86\ .
Skopiuj $SolutionRoot$\Debug\NativeMathWRT\NativeMathWRT.dll i wklej go w folderze $SolutionRoot$\NativeMathVSIX\Redist\Debug\x86 . Skopiuj $SolutionRoot$\Debug\NativeMathWRT\NativeMathWRT.winmd i wklej go w folderze $SolutionRoot$\NativeMathVSIX\References\CommonConfiguration\Neutral .
Skopiuj $SolutionRoot$\Debug\NativeMathWRT\NativeMathWRT.pri i wklej go w folderze $SolutionRoot$\NativeMathVSIX\References\CommonConfiguration\Neutral .
W folderze $SolutionRoot$\NativeMathVSIX\DesignTime\Debug\x86\ utwórz plik tekstowy o nazwie NativeMathSDK.props, a następnie wklej w nim następującą zawartość:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <NativeMathSDKPath>$(FrameworkSDKRoot)\..\..\UAP\v0.8.0.0\ExtensionSDKs\NativeMathSDK\1.0\</NativeMathSDKPath> <IncludePath>$(NativeMathSDKPath)DesignTime\CommonConfiguration\Neutral\Include;$(IncludePath)</IncludePath> <LibraryPath>$(NativeMathSDKPath)DesignTime\Debug\x86;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <Link> <AdditionalDependencies>NativeMath.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> </Project>Na pasku menu wybierz pozycję Wyświetl>inne okno właściwości systemu Windows>(Klawiatura: wybierz klawisz F4).
W Eksplorator rozwiązań wybierz plik NativeMathWRT.winmd. W oknie Właściwości zmień właściwość Akcja kompilacji na Zawartość, a następnie zmień właściwość Include in VSIX na True.
Powtórz ten proces dla pliku NativeMath.h .
Powtórz ten proces dla pliku NativeMathWRT.pri .
Powtórz ten proces dla pliku NativeMath.Lib .
Powtórz ten proces dla pliku NativeMathSDK.props .
W Eksplorator rozwiązań wybierz plik NativeMath.h. W oknie Właściwości zmień właściwość Include in VSIX na True.
Powtórz ten proces dla pliku NativeMath.dll .
Powtórz ten proces dla pliku NativeMathWRT.dll .
Powtórz ten proces dla pliku SDKManifest.xml .
Na pasku menu wybierz pozycję Kompiluj rozwiązanie kompilacji>.
W Eksplorator rozwiązań otwórz menu skrótów dla projektu NativeMathVSIX, a następnie wybierz pozycję Otwórz folder w Eksplorator plików.
W Eksplorator plików przejdź do folderu $SolutionRoot$\NativeMathVSIX\bin\Debug, a następnie uruchom plik NativeMathVSIX.vsix, aby rozpocząć instalację.
Wybierz przycisk Zainstaluj, poczekaj na zakończenie instalacji, a następnie otwórz program Visual Studio.
Aby utworzyć przykładową aplikację korzystającą z biblioteki klas
Na pasku menu wybierz pozycję Plik>nowy>projekt.
Na liście szablonów rozwiń pozycję Visual C++>Windows Universal, a następnie wybierz pozycję Pusta aplikacja. W polu Nazwa określ wartość NativeMathSDKSample, a następnie wybierz przycisk OK .
W Eksplorator rozwiązań otwórz menu skrótów dla projektu NativeMathSDKSample, a następnie wybierz pozycję Dodaj>odwołanie.
W oknie dialogowym Dodawanie odwołania na liście typów odwołań rozwiń węzeł Uniwersalny system Windows, a następnie wybierz pozycję Rozszerzenia. Na koniec zaznacz pole wyboru Natywny zestaw SDK matematyczny, a następnie wybierz przycisk OK .
Wyświetl właściwości projektu nativeMathSDKSample.
Właściwości zdefiniowane w pliku NativeMathSDK.props zostały zastosowane podczas dodawania odwołania. Właściwości zostały zastosowane, sprawdzając właściwość Katalogi VC++ właściwości Właściwości konfiguracji projektu.
W Eksplorator rozwiązań otwórz plik MainPage.xaml, a następnie zastąp jego zawartość następującym kodem XAML:
<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>Zaktualizuj plik Mainpage.xaml.h , aby był zgodny z tym kodem:
// // 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); }; }Zaktualizuj plik MainPage.xaml.cpp , aby był zgodny z tym kodem:
// // 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()); }Wybierz klucz F5, aby uruchomić aplikację.
W aplikacji wprowadź dowolne dwie liczby, wybierz operację, a następnie wybierz = przycisk.
Zostanie wyświetlony prawidłowy wynik.
W tym przewodniku pokazano, jak utworzyć zestaw SDK rozszerzenia i używać go do wywoływania biblioteki środowisko wykonawcze systemu Windows i biblioteki innej niż środowisko wykonawcze systemu Windows.