Die DLL wird vom Compiler (genauer: dem Linker) selbst überhaupt nicht
angefasst, sondern erst vom fertigen Programm zur Laufzeit.
Damit aber der Linker die Funktionsaufrufe von in der DLL enthaltenen
Funktionen irgendwie sinnvoll mit Deinem Programm verheiraten kann, ist
eben jene Importlibrary erforderlich.
Die enthält Funktionsrümpfe, die mit der DLL so verknüpft sind, daß das
Betriebssystem beim Aufrufen des Programmes die DLL lädt und die
Funktionen passend umbiegt.
Das bietet Dir den Komfort, so mit der DLL umgehen zu können wie mit
einer statischen Library, denn die Alternative bestünde darin, daß diese
Funktionen von Deinem Programm selbst übernommen werden müssten - laden
der DLL mit LoadLibrary, bestimmen der gewünschten Funktionspointer
mit GetProcAddress etc.