Bonjour,
J'ai cherché des renseignements à propos des librairies sur le net mais quelques points restent encore vague. Le fonctionnement est sous windows.
1. Quelles différences y-a-t'il entre librairie statique et Dll. Librairie statique ne fournit q'un .LIB.
2. Si j'ai un programme qui accède à une Dll A. dans la fonction de la Dll A, j'appelle une fonction de la Dll B qui met à jour une variable globale pour la Dll B.
Une fois terminé ce traitement, je retourne à mon programme principal. J'appelle une autre fonction de la Dll A qui appelle à nouveau une fonction de la Dll B qui accède à la variable globale.
La première valeur de la variable globale est elle gardée? Je ne charge pas la Dll avec un loadLibrary.
Ma variable globale est une structure contenant plusieurs champs dont l'adresse d'une fonction. Lors du premier appel à la DllA, j'appelle une fonction de la DllB en lui passant une adresse qui correspond à une fonction de la Dll A(fonction non exportée). Lors du second appel, je veux appeler depuis la DllB la fonction de la DllA.
Tout fonctionne correctement jusqu'à ce que je fasse appel à cette fonction. J'ai une erreur de windows "privileged instruction". J'ai l'impression en débuggant que l'adresse de la structure est conservée mais pas ses champs.
Ce fonctionnement marche lorsque DllA est un programme directement. Ce problème peut il êtru dû au fait que la fonction que je veux appeler soit dans une Dll et ne soit pas exportée ou peut on quand même appeler la fonction si on connait son adresse?
Merci.
Partager