Statische Bibliotheken (C++/CX)Static libraries (C++/CX)

Eine statische Bibliothek, die in einer UWP-App (Universelle Windows-Plattform) verwendet wird, kann ISO-Standard-C++-Code enthalten, einschließlich STL-Typen, sowie Aufrufe von Win32-APIs, die nicht von der Windows-Runtime-App-Plattform ausgeschlossen sind.A static library that's used in a Universal Windows Platform (UWP) app can contain ISO-standard C++ code, including STL types, and also calls to Win32 APIs that are not excluded from the Windows Runtime app platform. Eine statische Bibliothek verwendet Windows-Runtime-Komponenten und kann Windows-Runtime-Komponenten mit bestimmten Einschränkungen erstellen.A static library consumes Windows Runtime components and may create Windows Runtime components with certain restrictions.

Erstellen von statischen BibliothekenCreating static libraries

Die Anweisungen zum Erstellen eines neuen Projekts hängen davon ab, welche Version von Visual Studio Sie installiert haben.Instructions for creating a new project vary depending on which version of Visual Studio you have installed. Verwenden Sie das Versionsauswahlsteuerelement, um die Version Dokumentation für Ihre bevorzugte Version von Visual Studio anzuzeigen.To see the documentation for your preferred version of Visual Studio, use the Version selector control. Es befindet sich oben im Inhaltsverzeichnis auf dieser Seite.It's found at the top of the table of contents on this page.

So erstellen Sie eine statische UWP-Bibliothek in Visual Studio 2019To create a UWP static library in Visual Studio 2019

  1. Klicken Sie in der Menüleiste auf Datei > Neu > Projekt, um das Dialogfeld Neues Projekt erstellen zu öffnen.On the menu bar, choose File > New > Project to open the Create a New Project dialog box.

  2. Legen Sie oben im Dialogfeld Sprache auf C++ fest, legen Sie Plattform auf Windowsfest, und legen Sie den Projekttyp auf UWPfest.At the top of the dialog, set Language to C++, set Platform to Windows, and set Project type to UWP.

  3. Wählen Sie in der gefilterten Liste der Projekttypen Statische Bibliothek (Universelles Windows - C++/CX) und dann Weiteraus.From the filtered list of project types, choose Static Library (Universal Windows - C++/CX) then choose Next. Geben Sie dem Projekt auf der nächsten Seite einen Namen, und geben Sie ggf. den Projektspeicherort an.In the next page, give the project a name, and specify the project location if desired.

  4. Klicken Sie auf die Schaltfläche Erstellen, um das Projekt zu erstellen.Choose the Create button to create the project.

So erstellen Sie eine statische UWP-Bibliothek in Visual Studio 2017 oder Visual Studio 2015To create a UWP static library in Visual Studio 2017 or Visual Studio 2015

  1. Wählen Sie in der Menüleiste Datei > neues > Projektaus.On the menu bar, choose File > New > Project. Wählen Sie unter Visual C++ > Windows Universal Statische Bibliothek (Universelles Windows) aus.Under Visual C++ > Windows Universal choose Static Library (Universal Windows).

  2. Öffnen Sie im Projektmappen-Explorerdas Kontextmenü für das Projekt, und wählen Sie dann Eigenschaftenaus.In Solution Explorer, open the shortcut menu for the project and then choose Properties. Legen Sie im Dialogfeld Eigenschaften auf der Seite Konfigurationseigenschaften > C/C++ "Windows-Runtime-Erweiterung auf Ja (/ZW) fest.In the Properties dialog box, on the Configuration Properties > C/C++ page, set Consume Windows Runtime Extension to Yes (/ZW).

Wenn Sie eine neue statische Bibliothek kompilieren und einen Aufruf einer Win32-API tätigen, die für UWP-Apps ausgeschlossen ist, löst der Compiler den Fehler C3861, "Identifier not found" aus.When you compile a new static library, if you make a call to a Win32 API that's excluded for UWP apps, the compiler will raise error C3861, "Identifier not found." Informationen zur Suche nach einer alternativen Methode, die für die Windows-Runtime unterstützt wird, finden Sie unter Alternativen zu Windows-APIs in UWP-Apps.To look for an alternative method that's supported for the Windows Runtime, see Alternatives to Windows APIs in UWP apps.

Wenn Sie einer UWP-App-Lösung ein statisches C++-Bibliotheksprojekt hinzufügen, müssen Sie möglicherweise die Eigenschafteneinstellungen des Bibliotheksprojekts aktualisieren, sodass die UWP-Supporteigenschaft auf Jafestgelegt ist.If you add a C++ static library project to a UWP app solution, you might have to update the library project’s property settings so that the UWP support property is set to Yes. Ohne diese Einstellung wird der Code erstellt und verknüpft, aber es tritt ein Fehler auf, wenn Sie versuchen, die App für den Microsoft Store zu überprüfen.Without this setting, the code builds and links, but an error occurs when you attempt to verify the app for the Microsoft Store. Die statische Bibliothek sollte mit den gleichen Compilereinstellungen wie das Projekt kompiliert werden, in dem sie verwendet werden.The static lib should be compiled with the same compiler settings as the project that consumes it.

Wenn Sie eine statische Bibliothek nutzen, die öffentliche ref -Klassen, öffentliche Schnittstellenklassen oder öffentliche Wertklassen erstellt, gibt der Linker folgende Warnung aus:If you consume a static library that creates public ref classes, public interface classes, or public value classes, the linker raises this warning:

Warnung LNK4264: Archivierung der mit /ZW kompilierten Objektdatei in einer statischen Bibliothek; Beachten Sie, dass beim Erstellen von Windows-Runtime-Typen keine Verknüpfung mit einer statischen Bibliothek empfohlen wird, die Windows-Runtime-Metadaten enthält.warning LNK4264: archiving object file compiled with /ZW into a static library; note that when authoring Windows Runtime types it is not recommended to link with a static library that contains Windows Runtime metadata.

Sie können die Warnung nur dann ignorieren, wenn die statische Bibliothek keine Windows-Runtime-Komponenten erzeugt, die außerhalb der Bibliothek selbst verbraucht werden.You can safely ignore the warning only if the static library is not producing Windows Runtime components that are consumed outside the library itself. Wenn die Bibliothek keine Komponenten verwendet, die sie definiert, kann der Linker die Implementierung optimieren, obwohl die öffentlichen Metadaten die Typinformationen enthalten.If the library doesn’t consume a component that it defines, then the linker can optimize away the implementation even though the public metadata contains the type information. Das bedeutet, dass öffentliche Komponenten in einer statischen Bibliothek kompiliert, aber nicht zur Laufzeit aktiviert werden.This means that public components in a static library will compile but will not activate at run time. Aus diesem Grund muss jede Windows-Runtime-Komponente, die für den Verbrauch durch andere Komponenten oder Apps vorgesehen ist, in einer Dynamic-Link-Bibliothek (DLL) implementiert werden.For this reason, any Windows Runtime component that's intended for consumption by other components or apps must be implemented in a dynamic-link library (DLL).

Siehe auchSee also

Threading und MarshalingThreading and Marshaling