Statische Bibliotheken (C++/CX)
Eine statische Bibliothek, die in einer Universelle Windows-Plattform-App (UWP) verwendet wird, kann ISO-Standard-C++-Code enthalten, einschließlich STL-Typen, und auch Aufrufe von Win32-APIs, die nicht von der Windows-Runtime App-Plattform ausgeschlossen sind. Eine statische Bibliothek verwendet Windows-Runtime Komponenten und kann Windows-Runtime Komponenten mit bestimmten Einschränkungen erstellen.
Erstellen von statischen Bibliotheken
Anweisungen zum Erstellen eines neuen Projekts variieren je nachdem, welche Version von Visual Studio Sie installiert haben. Um die Dokumentation für Ihre bevorzugte Version von Visual Studio anzuzeigen, verwenden Sie das Auswahlsteuerelement Version. Es befindet sich am Anfang des Inhaltsverzeichnisses auf dieser Seite.
So erstellen Sie eine statische UWP-Bibliothek in Visual Studio
Klicken Sie in der Menüleiste auf Datei>Neu>Projekt, um das Dialogfeld Neues Projekt erstellen zu öffnen.
Legen Sie oben im Dialogfeld "Sprache" auf C++ fest, legen Sie "Plattform" auf Windows fest, und legen Sie den Projekttyp auf UWP fest.
Wählen Sie in der gefilterten Liste der Projekttypen die Option "Statische Bibliothek " (Universelle Windows - C++/CX) und dann "Weiter" aus. Geben Sie auf der nächsten Seite dem Projekt einen Namen, und geben Sie bei Bedarf den Projektspeicherort an.
Klicken Sie auf die Schaltfläche Erstellen, um das Projekt zu erstellen.
So erstellen Sie eine statische UWP-Bibliothek in Visual Studio 2017 oder Visual Studio 2015
Klicken Sie in der Menüleiste auf Datei>Neu>Projekt. Wählen Sie unter Visual C++>Windows Universal Static Library (Universal Windows) aus.
Öffnen Sie im Projektmappen-Explorerdas Kontextmenü für das Projekt, und wählen Sie Eigenschaftenaus. Legen Sie im Dialogfeld Eigenschaften auf der Seite "Konfigurationseigenschaften>C/C++" die Option "Verwenden Windows-Runtime Erweiterung auf Ja (/ZW)" fest.
Wenn Sie eine neue statische Bibliothek kompilieren, wenn Sie einen Aufruf einer Win32-API ausführen, die für UWP-Apps ausgeschlossen ist, löst der Compiler den Fehler C3861 aus, "Bezeichner nicht gefunden". Eine alternative Methode, die für die Windows-Runtime unterstützt wird, finden Sie unter Alternativen zu Windows-APIs in UWP-Apps.
Wenn Sie einer UWP-App-Lösung ein C++-Bibliotheksprojekt hinzufügen, müssen Sie möglicherweise die Eigenschafteneinstellungen des Bibliotheksprojekts aktualisieren, damit die UWP-Supporteigenschaft auf "Ja" festgelegt ist. Ohne diese Einstellung erstellt der Code und Links, tritt jedoch ein Fehler auf, wenn Sie versuchen, die App für den Microsoft Store zu überprüfen. Die statische Bibliothek sollte mit den gleichen Compilereinstellungen wie das Projekt kompiliert werden, in dem sie verwendet werden.
Wenn Sie eine statische Bibliothek nutzen, die öffentliche ref
-Klassen, öffentliche Schnittstellenklassen oder öffentliche Wertklassen erstellt, gibt der Linker folgende Warnung aus:
Warnung LNK4264: Archivierungsobjektdatei, die mit /ZW in eine statische Bibliothek kompiliert wurde; beachten Sie, dass beim Erstellen Windows-Runtime Typen nicht empfohlen wird, eine Verknüpfung mit einer statischen Bibliothek zu erstellen, die Windows-Runtime Metadaten enthält.
Sie können die Warnung nur dann sicher ignorieren, wenn die statische Bibliothek nicht Windows-Runtime Komponenten produziert, die außerhalb der Bibliothek selbst verbraucht werden. Wenn die Bibliothek keine von der Bibliothek definierte Komponente verwendet, kann der Linker die Implementierung auch dann optimieren, wenn die öffentlichen Metadaten die Typinformationen enthalten. Das bedeutet, dass öffentliche Komponenten in einer statischen Bibliothek kompiliert, aber nicht zur Laufzeit aktiviert werden. Aus diesem Grund müssen alle Windows-Runtime Komponente, die für die Verwendung durch andere Komponenten oder Apps vorgesehen ist, in einer Dynamic Link Library (DLL) implementiert werden.