Wenn Sie im Visual Studio win32-Tutorial einen DLL-Fehler erhalten, hilft Ihnen die heutige Lektion.
Genehmigt: Fortect
- 23 Minuten, um lesen zu können.
Dies ist die neue Schritt-für-Schritt-Anleitung zum Fernsehen, wie Sie die genaue Visual Studio-IDE verwenden, um Ihre eigene Dynamic Link Choice (DLL)-Bibliothek zu erstellen, die in Microsoft C + geschrieben ist + (MSVC). Anschließend wird gezeigt, wie Sie eine C++-DLL aus einer anderen Anwendung einbinden. DLLs (auch als Shared Libraries auf UNIX-Trainingssystemen bekannt) sind eine der nützlichsten Self-Storage-Einheiten von Windows-Komponenten. Sie können diese Käufer verwenden, um Code und damit Ressourcen freizugeben und die Größe Ihrer Anwendungen zu reduzieren. DLLs werden Ihre Anwendungen sogar einfacher zu warten und zu erweitern.
In dieser exemplarischen Vorgehensweise erhalten Sie eine DLL, die einige mathematische Funktionen implementiert. Dann erstellen Sie eine Konsole, in der die Anwendung dazu neigt, die DLL-Ausführung durchzuführen. Es stellt Ihnen auch einige der Programmieransätze und -konventionen vor, wenn Windows in DLLs verwendet wird. Ein
-
Erstellen Sie ein DLL-Projekt in Visual Studio.
-
Exportierte Variablen zur DLL hinzugefügt.
-
Erstellen p Das Xbox-App-Projekt in Visual Studio.
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
- 1. Laden Sie Fortect herunter und installieren Sie es auf Ihrem Computer
- 2. Starten Sie das Programm und klicken Sie auf "Scannen"
- 3. Klicken Sie auf "Reparieren", um alle gefundenen Probleme zu beheben
Verwenden Sie Aspekte und Regeln der importierten DLL in einer Konsolenaufgabe.
-
Führen Sie die beendete Anwendung aus.
Wie eine vollständig statisch verknüpfte Bibliothek exportiert eine DLL Faktoren, Funktionen und Ressourcen nach Namen. Die Besitzeranwendung importiert Namen, um persönliche Variablen, Vorteile und Ressourcen zu verwenden. Im Gegensatz zu einer statisch verknüpften Bibliothek packt Windows die Importe und Exporte Ihrer App beim Laden oder während der Verwendung in die neue vollständige DLL, anstatt sie gleichzeitig einzubinden. Windows benötigt zusätzliche Informationen, die normalerweise nicht Teil der Standard-C++-Kompilierung sind, um diese Verbindungen herzustellen. Der MSVC-Compiler implementiert einige Microsoft-spezifische Erweiterungen für C++, sofern Sie diese zusätzlichen Informationen bereitstellen möchten. Wir erklären, wie wir Erweiterungen machen.
Diese exemplarische Vorgehensweise erstellt eine Reihe von Visual Studio-Lösungen. genau, wem Sie alle DLLs und die Benutzeranwendung erstellen. DLL verwendet C gemäß der Konvention. Es kann von Anwendungen aufgerufen werden, die in anderen Wachstumssprachen geschrieben wurden, wenn die Plattform, die Aufrufkonventionen und sogar die Rückverweiskonventionen gleich sind. Client nutzt die Anwendung einen Standardlink, bei dem Windows optional eine bestimmte Anwendung beim Booten mit der DLL verknüpft. Wenn Sie dies verknüpfen, kann Ihre Anwendung von der DLL bereitgestellte Merkmale aufrufen, genau wie Funktionen in einer statisch verwalteten Bibliothek.
Dies schützt einige grundlegende Situationen nicht. Der Code zeigt nicht eindeutig die Verwendung ähnlicher C++-Bibliotheken durch den Prozess anderer Programmiersprachen. Es wird nicht speziell gezeigt, wie die neueste reine Ressourcen-DLL erstellt oder wie ein expliziter Link anstelle der Downloadzeit verwendet wird. Stellen Sie sicher, dass MSVC und Visual Studio wird wahrscheinlich fast all diese Dinge tun.Links
Weitere Informationen zu DLLs finden Sie unter Erstellen von C/C++-DLLs in Visual Studio . Weitere Informationen zu impliziten Rückverweisen sowie expliziten Verweisen finden Sie unter Bestimmen der zu verwendenden Can-Konfigurationsmethode . Weitere Informationen zum Neuerstellen von C + DLLs + zur Verwendung in verschiedenen Programmierprogrammen Für die Erstellung unter Verwendung der C-Bindungskonventionen siehe Exportieren von C++-Funktionen zur Verwendung in ausführbaren C-Sprachen Für Informationen zum Erstellen von DLLs zur Einbindung in .NET-Sprachen, siehe DLL Aufrufen von Funktionen für Visual Basic-Anwendungen .
Anforderungen
- Auf dem mobilen Computergerät wird Microsoft Windows 7 oder früher ausgeführt. Wir empfehlen Windows 10 für die beste Entwicklungserfahrung.
-
Verstehen Sie die Grundlagen der Verwendung der Visual Studio-IDE. Wenn Sie bereits Windows-Desktop-Apps verwendet haben, kann Ihre Familie definitiv mithalten. Eine Übersicht finden Sie unter Übersicht über die Visual Studio-IDE-Features .
-
Erlangen Sie ausreichende Kenntnisse unserer Sprache C++, um teilnehmen zu können. Machen Sie sich keine allzu großen Sorgen, wir machen nichts zu kompliziert.
Erstellen Sie ein genaues DLL-Projekt
In unserer Aufgabe erstellt der Kunde ein Projekt für Ihre persönliche DLL, verbessert den Code und baut ihn. Beginnen Sie zunächst mit der Visual Studio-IDE und geben Sie ggf. einen Hinweis ein. Leicht anpassbare Anweisungen je nach Version von Visual Studio, die Sie verwenden. Stellen Sie sicher, dass Sie das richtige Design, das im Befehl in der oberen Drop-Ecke der Seite ausgewählt wurde, einfügen. Jetzt
Die Wartung macht diese DLL nicht zu extrem. Als Nächstes erstellen Sie eine Header-Datei, um Einzelpersonen zu helfen, die Funktionen zu deklarieren, die Ihre DLL hochladen wird, und fügen dann dieser DLL Funktionsdefinitionen hinzu, um sie nützlicher zu machen.
-
Um einen Dateikopf für Ihre Funktionen zu formulieren, wählen Sie aus dem Menü Standard Projekt> Neues Element hinzufügen.
-
Wählen Sie im Dialogfeld Neues Element hinzufügen im abgelegten Bereich Visual C ++ aus. Wählen Sie in der Mitte Header (file.h) aus. Geben Sie MathLibrary.h als aktuellen Header-Dateinamen ein.
-
Aktivieren Sie normalerweise die Schaltfläche Hinzufügen, um eine weiße h2-Tags-Datei zu generieren, die im angrenzenden Editorfenster angezeigt wird.
-
Ersetzen Sie den Inhalt des Datenbank-Headers durch diese Vorwahl:
// MathLibrary.h - enthält mathematische Beschäftigungserklärungen#pragma einmal#ifdef MATHLIBRARY_EXPORTS#define MATHLIBRARY_API __declspec (dllexport)#Ein weiterer#define MATHLIBRARY_API __declspec (dllimport)#end if// Wiederholung des Fibonacci-Verhältnisses formt die Folge F// wobei F (n) {n 0 bedeutet, a. Wille// {d = 1, b// {n> Bewegung 1, F (n-2) + F (n-1)// um einige wichtige Anfangswerte a und b zu erzeugen.// .wenn .zone. Initialisiert .F (0). = .1, .F (1). Bedeutet .1,// dann erzeugt diese Beziehung die weithin bekannte Fibonacci-Form.//. Sequenz: .1, .1, .2, .3 ,. Reihe, .8, .13, .21, .34, ....// Über eine beliebige Folge von Fibonacci-Verhältnissen initialisieren// also impliziert F (0) a, F (1) = b.// Der Intent muss vor jeder anderen Funktion aufgerufen werden.extern "C" MATHLIBRARY_API void fibonacci_init ( vorzeichenlos zuverlässig lang lang a, vorzeichenlose Konstante für einige Zeit verlängert, was b erzeugt;// nächster Wert hier der Reihe nach.// Gibt bei Erfolg true zurück, sodass der aktuelle Wert und auch der ungültige Index aktualisiert werden;// Überlauf, aktuelle Vorteile und Datenbank unverändert lassen.extern "C" MATHLIBRARY_API bool fibonacci_next ();// erhalte den letzten Wert der Progression "C"extern MATHLIBRARY_API unsigned long long fibonacci_current ();// NSGet die Hauptposition, einschließlich des aktuellen Werts in dieser Sequenz.extern "C" MATHLIBRARY_API unsigned fibonacci_index ();
Diese Header-Datei deklariert einige Funktionen zum Erstellen einer verallgemeinerten Fibonacci-Kette sowie zwei gegebene Anfangswerte. Ein Anruf auf der Suche nach Hilfe fibonacci_init (1, 1)
liefert die bekannte Größe der Fibonacci-Folge.
Beachten Sie die Anweisungen zum Präprozessor am Anfang der Datei. Neue Webprojektstruktur für DLL-Projekt fügt PROJECTNAME_EXPORTS mit einem einzelnen Makro-Präprozessor hinzu. Das obige Visual Studio verwendet beispielsweise MATHLIBRARY_EXPORTS, wenn Sie Ihren MathLibrary-DLL-Auftrag erstellen.
Wenn das Makro MATHLIBRARY_EXPORTS definiert ist, hinterlässt das Makro MATHLIBRARY_API __declspec (dllexport)
einen Modifizierer für Fähigkeitsdeklarationen. Dieser Modifikator weist den Compiler und Marketplace an, eine Funktion oder Variable aus Ihrer eigenen spezifischen DLL zur Verwendung durch andere Anwendungen zu exportieren. Wenn MATHLIBRARY_EXPORTS nicht definiert ist, beispielsweise wenn jede einzelne Header-Datei in derselben Methode enthalten ist, wendet MATHLIBRARY_API den Modifizierer __declspe auf alle Deklarationensc (dllimport)
an. Dieser Modifikator optimiert die Rate von Funktionen oder Variablen bei korrekter Verwendung. Weitere Informationen finden Sie unter dllexport, dllimport .
So erstellen Sie eine DLL-Implementierung
Um sicherzustellen, dass alles funktioniert, kompilieren Sie eine dedizierte Pattern-Link-Bibliothek. Kompilieren Sie, um Build> Build Solution aus dem Pub-Menü auszuwählen. Die DLL und die gesamte zugehörige Compilerausgabe werden tatsächlich im neuen Ordner mit dem Namen Directly debug in der Lösungsdatei abgelegt. Wenn Sie eine Freigabe freigeben möchten, wird ein Ergebnis in einem Ordner namens Freigabe abgelegt. Das Endergebnis sollte so aussehen:
Herzlichen Glückwunsch, Sie haben die DLL mit Visual Studio erstellt! Als Nächstes stellen Sie sicher, dass Sie eine beliebige Clientanwendung erstellen, die jede der heutigen exportierten DLL-Funktionen verwendet. Ein
Erstellen einer Clientanwendung mit der DLL
Überlegen Sie beim Vorbereiten einer DLL, wie Client-Programme sie unterstützen können. Werke abrufen oder darauf zugreifen
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.