Loadlibrary ne parvient pas à charger la dll
*******************UseDll1.cpp*********************
#include <windows.h>
typedef int (*function1_ptr) ();
function1_ptr function1=NULL;
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
HMODULE myDll = LoadLibrary("Dll1.dll");
if(myDll!=NULL) {
function1 = (function1_ptr) GetProcAddress(myDll,"function1");
if(function1!=NULL)
function1();
else
exit(4);
FreeLibrary(myDll);
}
else
exit(6);
return 0;
}
Ceci est fait dans le but de les appeler Dll1.dll qui a été créé avec la fonctionnalité pour envoyer un mail à mon propre serveur de mail. Le code ci-dessus s'exécute et se ferme,et aucun courrier n'est envoyé.
Et j'ai aussi placé le Dll1.dll dans le même dossier que UseDll1.
EDIT:
J'ai ajouté de l'Dll1.dll dans le dossier system32.
- Ne le mettez pas dans le system32. Il n'est pas supposé y aller, et vous êtes juste de piratage sans la résolution du problème réel.
- j'ai lu sur internet où ils disent qu'il y a des chances que la dll n'est pas en mesure de charger, car il possède également des dépendances,mais dans ce cas, fonction1 serait de retour NULL..wht dire??
- si la variable madll n'est pas nulle mais GetProcAddress retourner null, vérifier si le fichier dll est l'exportation de fonction requise. ne prenez note de "name mangling" si vous exportez en tant que c++
Vous devez vous connecter pour publier un commentaire.
Avez-vous vérifiez que vous disposez de toutes les dépendances externes pour l' "DLL1.dll" ?
LoadLibrary échoue même si une ou indirects liés-la bibliothèque n'est pas disponible.
Dans mon appel de dll expérience, j'ai eu le même problème. J'ai tout fait pour donner le chemin d'accès, à juste titre, mais ma bibliothèque ne peut pas être chargé. Tout d'abord j'ai pensé que ma dll a des erreurs, mais rien n'a résolu mon problème au début. Je conseille de faire l'étape ci-dessous pour les amis qui pensent que leur projet écrit, à juste titre, mais encore d'avoir le même problème:
Après la construction du projet avec le bouton droit de la configuration, il est aujourd'hui.
Merci beaucoup, votre page web m'a beaucoup aidé 🙂 je n'avais qu'à utiliser tchar.h à le faire fonctionner. Vous pouvez le voir dans le reste de la réponse.
Simplement parce que le code s'exécute et se ferme ne signifie pas qu'il est bon! Êtes-vous sûr qu':
(madll!=null)
pointeur (fonction1!=null)
Vous devez parcourir le code dans un débogueur pour s'assurer que tous ce qui se passe et que le code est à fonction1(). Si c'est le cas alors j'imagine que votre fonction e-mail a un bug.
Pourquoi ne pas le débogage et de voir où il échoue? Assurez-vous que votre fichier dll qui est chargée(il pourrait être simplement un problème de chemin d'accès ou une mauvaise dll(que vous n'auriez pas importer/exporter les fonctions).
Trouver où la question est d'abord. C'est lors du chargement de la dll, l'appel de la fonction, ou à l'intérieur de la fonction
Je pense que vous avez déjà vérifié l'existence de dll.
Maintenant, Essayez ceci ::
Essayer de changer "any CPU" à 86 ou 64.
Essayez d'exécuter votre application en tant qu'administrateur.
J'ai eu le même problème. Cette lien résolu. Le problème était que je n'étais pas à l'aide de _T macro.