Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3027 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Utilisation de la fonction LoadLibrary == Visual C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation de la fonction LoadLibrary == Visual C++

n°281710
jibolin77
Posté le 08-01-2003 à 07:32:58  profilanswer
 

Bonjour à tous, et merci d'avance pour vos réponses et conseils éclairés.
 
Je fabrique actuellement des DLL qui contiennent, non pas des objets ou des classes, mais simplement des fonctions exportables vers d'autres DLL ou applicatifs.
Je précise que je n'utilise absolument pas de MFC.
 
Exemple, soit une fonction "float somme(float &a, float &b)".
Je crée une DLL nommée somme, à l'intérieur de laquelle on trouve la fonction exportée somme.
(l'exportdes fonctions se fait par le biais d'un fichier .def  de cette façon, j'exporte des fonctions au format C, et non au format C++, (pas de @@@@@@ lors de l'aperçu rapide des fonctions exportées sosu Windows).
 
Le programme appelant ces différentes fonctions utilise un chargement dynamique des DLL (LoadLibrary, puis GetProcAddress).
 
Les chargements se déroulent correctement, si ce n'est que lorsque le nombre de fonctions à charger en mémoire devient important (36), la dernière fonction ne se charge plus).
 
Le code d'erreur retourné par LoadLibrary est 1114, ce qui correspond à :
"A dynamic link library (DLL) initialization routine failed. ".
 
J'ai recherché dans l'aide MSDNet à DLL initialization, et on trouve un txte expliquant la nécessité de créer pour chaque DLL d'extension une fonction d'initialisation qui doit être appelée par le programme appelant. Cependant, ce paragraphe ne semble se référer qu'aux structures utilisant des MFC. Que faut-il faire ?  
Est-il obligatoire d'utiliser des fonctions d'initialisation, et le cas échéant, quel est leur rôle ? fonction ?  
Quel document, écrit en français, permettrait d'y voir plus clair ?

mood
Publicité
Posté le 08-01-2003 à 07:32:58  profilanswer
 

n°281712
SoWhatIn22
Posté le 08-01-2003 à 07:43:49  profilanswer
 

jibolin77 a écrit :


Le programme appelant ces différentes fonctions utilise un chargement dynamique des DLL (LoadLibrary, puis GetProcAddress).
 
Les chargements se déroulent correctement, si ce n'est que lorsque le nombre de fonctions à charger en mémoire devient important (36), la dernière fonction ne se charge plus).
 
Le code d'erreur retourné par LoadLibrary est 1114, ce qui correspond à :
"A dynamic link library (DLL) initialization routine failed. ".
 
J'ai recherché dans l'aide MSDNet à DLL initialization, et on trouve un txte expliquant la nécessité de créer pour chaque DLL d'extension une fonction d'initialisation qui doit être appelée par le programme appelant. Cependant, ce paragraphe ne semble se référer qu'aux structures utilisant des MFC. Que faut-il faire ?  
Est-il obligatoire d'utiliser des fonctions d'initialisation, et le cas échéant, quel est leur rôle ? fonction ?  
Quel document, écrit en français, permettrait d'y voir plus clair ?
 


 
 
Je pense qu'ils doivent parler de leur fonction 'DllMain', mais celle-ci est appelée automatiquement si elle est instrumentée ( comme les fonctions _init et _fini sous unix ). Aucun besoin d'une autre fonction d'init que je sache...
 
En lisant ton poste, j'ai l'impression que pour chaque fonction, tu fais un LoadLibrary+GetProcAddress. C'est bien cela?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Utilisation de la fonction LoadLibrary == Visual C++

 

Sujets relatifs
[HTML, JS] Utilisation XSL et CSS pour formater du XMLMéssage d'erreur à l'appel d'une fonction...
Pb avec la fonction highlight_string(). [RESOLU]Problème avec la fonction mail()
la bonne utilisation de toArray ds les implémentations de Collection[C] problème avec la fonction fwrite(...)
[VISUAL C++ 6]Probleme de try .. catchFonction inverse de chr() ???
pourquoi ma fonction d'1 ligne marche pasvisual basic 6
Plus de sujets relatifs à : Utilisation de la fonction LoadLibrary == Visual C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR