j'ai un programme et une dll, le tout programmé en c++.
j'exporte une fonction de ma dll qui prends en paramètre des références sur des conteneurs de la STL (plus particulièrement des vecteurs).
Je dois dire que je comprends rien à la convention de nommage et au décoration de nom, mais bon la dll est chargée, la fonction est trouvée (j'utilise l'attribut extern "C", mais bon faudra m'expliquer c'est du C++ que je fais car si je ne déclare pas comme ça, ça marche pas).
Quand je parcours les éléments de mes vecteurs à la sortie de la dll, tout est correct.
Par contre si je décharge la dll, tous les éléments de mes vecteurs ont disparu. Ce sont pourtant des références, dans le doute je teste avec des pointeurs mais c'est la même chose. Je regarde les adresses des variables et tout et tout ce sont les bonnes. J'effectue bien mes push_back à partir des références, bref j'y pipe que dalle.
Peut-être tout simplement que les objets construits dans la dll le sont dans l'espace de la dll et que forcément à sa libération tout est perdu. Quel est donc le comportement général des dll, vis-à-vis de l'allocation de mémoire? Allocation dans leur espace d'adressage, y-a-t-il moyen d'empêcher ce comportement?
Merci à tous.
PS: pour l'instant j'envisage d'exporter des fonctions qui retourneront des valeurs que j'ajouterais dans mes vecteurs.
Partager