Bei der ersten Variante definierst du nur einen Typ. Später im Programmfluss musst du dir eine Variable eben dieses Typs definieren und die Funktion selbst aus der
DLL (LoadLibraryA()/GetModuleHandleA() & GetProcAddress()) laden.
Bei der zweiten Variante wird es in die Importier-Liste beim Kompilieren hineinverlinkt. Dh. der
PE-Loader von Windows ist zuständig, dass er beim Initialisieren der Echse - falls diese ausgeführt wird - alle Module (DLLs) & Funktionen der Importier-Liste ladet (und weitere Aufgaben durchführt...).
MfG