Il utilise deux fonctions winapi de base. La première est LoadLibrary(), la fonction winapi qui charge une DLL dans un processus. Elle utilise le nom que vous avez spécifié pour la DLL. La seconde est GetProcAddress(), la fonction winapi qui retourne l'adresse d'une fonction dans une DLL. Elle utilise le nom de la fonction que vous avez spécifié. Ensuite, une certaine plomberie s'exécute et construit un cadre de pile pour l'appel de fonction, en utilisant les arguments que vous avez spécifiés, et appelle la fonction à l'adresse qu'elle a trouvée.
Donc oui, c'est très dynamique. Cela ne se produit pas tant que votre code n'atterrit pas sur une déclaration qui appelle la fonction pinvoked. Le terme technique est "liaison tardive", par opposition à la liaison précoce plus courante utilisée par le chargeur Windows pour le code natif.