L'édition 32 bits de Visual C++ utilise _declspec(dllimport) et _declspec(dllexport) pour remplacer le mot clé __export précédemment utilisé dans les versions 16 bits de Visual C++.
Vous ne devez pas utiliser _declspec(dllimport) pour votre code à compiler correctement, mais cela permet par conséquent, le compilateur à générer un code de meilleure qualité. Le compilateur est en mesure de générer un code de meilleure qualité, car il sait par que si une fonction existe dans une DLL ou pas, donc le compilateur peut générer des codes qui ignorer un niveau d'indirection qui est normalement être présent dans un appel de fonction qui franchi une limite la DLL.
Avec la section EXPORTS du fichier .def appropriée, _declspec(dllexport) n'est pas requis. _declspec(dllexport) a été ajoutée pour fournir un moyen facile d'exporter des fonctions à partir d'un .exe ou .dll sans à l'aide d'un fichier .def.
Le reste de cet article fournit une description relativement bas niveau, approfondie de ces problèmes.
Le format de l'exécutable portable Win32 est conçu pour réduire au minimum le nombre de pages de qui doit être touchées pour corriger les importations. Pour ce faire, il place toutes les adresses d'importation pour n'importe quel programme dans un seul endroit appelé la table d'adresses d'importation. Cela permet le chargeur modifier uniquement une ou deux pages lors de l'accès à ces importations.
Partager