Re-coucou re-tout-le-monde
Cette fois-ci la question porte sur la liaison (importation) avec les DLL.
On peut lier un programme à une DLL par nom ou par ordinal. Si vous faites par exemple un clic-droit sous Windows, sur un fichier d'application, et que vous choisissez l'option « aperçu rapide », vous aurez un dump résumé de l'exe.
Vous y trouverez les tables d'importation de l'application. Par exemple, vous trouverez que tel application importe BeginPaint, de user32.dll
Le plus souvent, vous avez un ordinal de zéro, et la liaison se fait sur le seul nom de la fonction importée.
Mais il est possible de lier par ordinal (le nom de la fonction est toujours fournie dans ce cas là).
Il est bien connu que pour l'exportation (exportation, pas importation), il ne faut pas seulement exporter que par ordinal, car cela pose des problème en cas de modification de la dll, si l'ordinal d'une fonction change, alors les programme risque de se lier à une mauvaise fonction, le nouvel ordinal représentant alors une autre fonction.
Je comprends bien cet aspect là... mais qu'en est-il pour l'importation ? Y at-il des risque à lier avec un ordinal ?
Je pose la question, parce que le lieur, ld, de MingW et CygWin, a la possibilité de lier directement à une DLL, sans même passer par une librairie d'importation.
J'ai remarquer que LD fait alors une laison par ordinal et par nom.
Est-ce que cela peut poser des problème ? (parce qu'il me semble qu'en passant par une librairie d'importation, la liaison ne se fait que par nom).
Help... I feel lost :p
Partager