Heim > Artikel > Betrieb und Instandhaltung > Win32 SDK-Grundlagen (2) Detaillierte Erläuterung der Kompilierungs- und Verknüpfungsvorgänge cl.exe und link.exe (Bild)
Im vorherigen Artikel haben wir Windows Kenntnisse über die Klassifizierung von Programmen unter dem System, Compilern, Konnektoren, häufig verwendeten Header-Dateien, Bibliotheksdateien usw. In diesem Artikel geht es um den Kompilierungsprozess des Programms.
Ich glaube, jeder weiß, dass der Kompilierungsprozess des Quellcodes in zwei Schritte unterteilt ist: Der eine ist der Kompilierungsprozess. Die Hauptaufgabe besteht darin, unseren Quellcode in Zwischendateien zu übersetzen in Windows ist das, was cl.exe tut, es konvertiert unsere .c-Datei oder .cpp-Dateien werden in Zwischendateien .obj übersetzt; der zweite ist der Verbindungsprozess. Die Hauptaufgabe besteht darin, verschiedene Zwischendateien und Bibliotheken zu verbinden Dateien, um ausführbare Dateien zu generieren, das ist es, was link.exe in Windows macht, es wird .obj Dateien und Bibliotheksdateien werden in exe-Programme verknüpft.
In diesem Artikel erfahren Sie hauptsächlich, wie Sie die IDE von VS entfernen und die Befehlszeile verwenden cl.exe und link.exe Programme kompilieren und verknüpfen.
Zuerst Wir erstellen eine neue Datei test.txt und benennen sie dann in text.c um. In diese Datei geben wir den folgenden Code ein:
#include "windows.h" int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { MessageBox(NULL,"Hello Win32","sdk",MB_ABORTRETRYIGNORE|MB_ICONERROR); return 0; }#include "windows.h"
importiert alle Header-Dateien, die wir für das Windows-System benötigen. Dann stellten wir die Hauptfunktion des Fensterprogramms Windows wWinMain vor. Hier ist eine kurze Erklärung der Funktion jedes formalen Parameters von Winmain: hInstance ist das Instanzhandle des aktuellen Programms, das ist der Speicher, in dem sich das aktuelle Programm befindet; hPrevInstanceDas vorherige Instanz-Handle des aktuellen Programms, das derzeit aufgegeben wird; ist der Befehlszeilenparameter, das heißt, wir verwenden die Befehlszeile. Wenn Sie das Programm ausführen, können Sie einige Zeichenfolgen als Parameter anhängen. nCmdShow ist Fensteranzeigemodus: Maximieren oder Minimieren. Wir haben MessageBox in der Hauptfunktion aufgerufen, um ein modales Dialogfeld zu definieren. Wenn die Kompilierung erfolgreich ist, wird nach der Ausführung des Programms ein Dialogfeld angezeigt. Nachdem die Datei Test.c
geschrieben wurde, müssen wir als Nächstes die Dateien separat kompilieren und verknüpfen.Drei
cmd-Befehlszeilentool, wechseln Sie dann in unser aktuelles Arbeitsverzeichnis und verwenden Sie den folgenden Befehl, um die Datei Test.c zu kompilieren: Cl.exe /c test.c
Nach Abschluss der Kompilierung wird die Zwischendatei test.objim Arbeitsverzeichnis generiert:
Wenn Ihre Befehlszeilenaufforderung den Befehl cl.exe und andere Informationen nicht finden kann, sollten Sie meiner Meinung nach verstehen, dass dies an der Umgebung liegt Variable existiert nicht. Um das Verzeichnis zu importieren, in dem sich cl.exe befindet, können wir zuerst die Umgebungsvariable hinzufügen oder sie mit dem vollständigen Pfad importieren. Wenn Sie die Datei test.obj generiert haben, bedeutet dies, dass der Kompilierungsprozess abgeschlossen ist und wir den Verbindungsprozess starten können.
Als nächstes führen wir den folgenden Befehl aus, um die ausführbare Datei zu generieren:
Link.exe test.obj user32.lib
User32.lib Diese Bibliothek, die wir im vorherigen Artikel erwähnt haben, enthält die gewünschte Benutzeroberfläche und nachrichtenbezogene API Die MessageBox, die wir aufrufen müssen, ist in dieser Bibliothek definiert, wenn nichts anderes passiert, Die ausführbare Datei test.exe sollte in Ihrem Arbeitsverzeichnis generiert werden:
Doppelklicken Sie auf diese exe und das von uns definierte Dialogfeld wird angezeigt:
OK, der Test ist beendet. Wir haben uns komplett von der VSmit SchnittstelleIDE gelöst, um ein benutzerdefiniertes Dialogfeld zu erstellen. Ist das nicht erstaunlich? Hier sollte Xiao Yueyues gemeiner Gesichtsausdruck zu sehen sein. . .
Das obige ist der detaillierte Inhalt vonWin32 SDK-Grundlagen (2) Detaillierte Erläuterung der Kompilierungs- und Verknüpfungsvorgänge cl.exe und link.exe (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!