DLL:er (C++/CX)

Du kan använda Visual Studio för att skapa antingen en standard-Win32 DLL eller en Windows Runtime-komponent-DLL som kan användas av UWP-appar (Universal Windows Platform). En standard-DLL som skapades med hjälp av en version av Visual Studio eller Microsoft C++-kompilatorn som är tidigare än Visual Studio 2012 kanske inte läses in korrekt i en UWP-app och kanske inte klarar appverifieringstestet i Microsoft Store.

DLL:er för Windows Runtime-komponent

När du i nästan alla fall vill skapa en DLL för användning i en UWP-app skapar du den som en Windows Runtime-komponent med hjälp av projektmallen med det namnet. Du kan skapa ett Windows Runtime-komponentprojekt för DLL:er som har offentliga eller privata Windows Runtime-typer. En Windows Runtime-komponent kan nås från appar som är skrivna på valfritt Windows Runtime-kompatibelt språk. Som standard använder kompilatorinställningarna för ett Windows Runtime-komponentprojekt /ZW-växeln . En .winmd-fil måste ha samma namn som rotnamnområdet. En klass med namnet A.B.C.MyClass kan till exempel bara instansieras om den definieras i en metadatafil med namnet A.winmd eller A.B.winmd eller A.B.C.winmd. Namnet på DLL:en krävs inte för att matcha .winmd-filnamnet.

Mer information finns i Skapa Windows Runtime-komponenter i C++.

Så här refererar du till en Windows Runtime-komponent från tredje part i ditt projekt

  1. Öppna snabbmenyn för projektet som ska använda DLL och välj sedan Egenskaper. På sidan Vanliga egenskaper väljer du knappen Lägg till ny referens .

  2. En Windows Runtime-komponent består av en DLL-fil och en .winmd-fil som innehåller metadata. Dessa filer finns vanligtvis i samma mapp. I den vänstra rutan i dialogrutan Lägg till referens väljer du knappen Bläddra och navigerar sedan till platsen för DLL och dess .winmd-fil. Mer information finns i Tilläggs-SDK:er.

Standard-DLL:er

Du kan skapa en standard-DLL för C++-kod som inte använder eller producerar offentliga Windows Runtime-typer och som använder den från en UWP-app. Använd projekttypen Dynamic-Link library (DLL) när du bara vill migrera en befintlig DLL för kompilering i den här versionen av Visual Studio men inte konvertera koden till ett Windows Runtime-komponentprojekt. När du använder följande steg distribueras DLL-filen tillsammans med den körbara appen i .appx-paketet.

Så här skapar du en standard-DLL i Visual Studio

  1. På menyraden väljer du Arkiv, Nytt, Projekt och sedan DLL-mallen (Dynamic Link Library).

  2. Ange ett namn för projektet och välj sedan knappen OK .

  3. Lägg till koden. Se till att använda __declspec(dllexport) för funktioner som du tänker exportera, till exempel __declspec(dllexport) Add(int I, in j);

  4. Lägg till #include winapifamily.h för att inkludera huvudfilen från Windows SDK för UWP-appar och ange makrot WINAPI_FAMILY=WINAPI_PARTITION_APP.

Så här refererar du till ett standard-DLL-projekt från samma lösning

  1. Öppna snabbmenyn för projektet som ska använda DLL och välj sedan Egenskaper. På sidan Vanliga egenskaper väljer du knappen Lägg till ny referens .

  2. I den vänstra rutan väljer du Lösning och markerar sedan lämplig kryssruta i den högra rutan.

  3. Lägg till en #include instruktion för DLL-huvudfilen efter behov i källkodsfilerna.

Så här refererar du till en standard-DLL-binär fil

  1. Kopiera DLL-filen, .lib-filen och huvudfilen och klistra in dem på en känd plats, till exempel i den aktuella projektmappen.

  2. Öppna snabbmenyn för projektet som ska använda DLL och välj sedan Egenskaper. På sidan Konfigurationsegenskaper, Linker, Indata lägger du till .lib-filen som ett beroende.

  3. Lägg till en #include instruktion för DLL-huvudfilen efter behov i källkodsfilerna.

Migrera en befintlig Win32 DLL för UWP-appkompatibilitet

  1. Skapa ett projekt av typen DLL (Universal Windows) och lägg till din befintliga källkod i den.

  2. Lägg till #include winapifamily.h för att inkludera huvudfilen från Windows SDK för UWP-appar och ange makrot WINAPI_FAMILY=WINAPI_PARTITION_APP.

  3. Lägg till en #include instruktion för DLL-huvudfilen efter behov i källkodsfilerna.