Lorelei42
Messages postés24Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention 4 août 2004
-
30 juin 2004 à 11:15
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
24 mai 2007 à 20:40
Bonjour,
J'ai un gros programme en C et on m'a demandé d'en faire 1 DLL.
Lors de mes cours en programmation, on ne m'a jamais parlé de DLL. J'ai trouvé déjà des renseignements, mais ce n'est pas toujours très clair.
Peut-être vous pouvez m'éclairer sur certains points encore obscurs:
Quelles sont les types de fonctions que l'on peut mettre dans 1 DLL? (sans argument en sortie, en entrée ...)
Faut-il bien 3 fichiers? (1 .h, 1 .def et 1.c)
Sur les exemples, on parle d'API est-ce obligatoire?
Lorsque l'on compile ces 3 fichiers on obtient le .dll ? et le .lib?
Ensuite on écrit un autre fichier .c où on fera appelle à la DLL ?
J'ai tenté de faire les 3 fichiers. Tout compile mais le .dll n'est pas généré!!!!
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 30 juin 2004 à 11:56
1) on peut mettre n'importe kel type de fonctions dans une DLL.
2) ouais il faut bien ces trois types de fichiers : le .c ou .cpp qui va contenir le code des fonctions que tu veux mettre dans la dll, le .h qui va contenir les definitions (= les entêtes) de ces fonctions, pour que tu puisses les utiliser dans un autre projet qui fera appel a ta DLL, et le .def qui contient les symboles qui sont exportés dans la DLL (ex: dans ton .c t'as 3 fonctions : une principale, et deux autres intermédiaires qui sont utilisées par ta fonction principale, la mieux vaut n'exporter que la fonction principale, cela ne signifie pas que les 2 autres fonctions ne seront pas dans la DLL, mais juste qu'on ne pourra pas appeler ces fonctions la depuis un autre programme)
3) on parle d'api car les DLL c'est pour windows ! donc oui je pense (sans etre certain !!!) que c'est obligatoire
4) normalement quand on compile les trois fichiers, ton compilateur te génere un .lib et un .dll (le .lib qu'il te suffit d'ajouter lors de l'edition de lien d'un .exe ou d'une autre .dll qui veut utiliser des fonctions de ta dll)
je ne sais pas si c'est standard, mais sous visual c++, on n'est pas obligé de generer manuellement un .def : il suffit d'ajouter:
extern "C"
{
__declspec(dllexport) int fonctiontest(int a, int b);
};
dans ton .c pour dire que tu veux exporter la fonction fonctiontest. il suffit alors d'ajouter le .lib généré dans ton autre projet pour utiliser ta DLL.
voila je sais pas si c'est plus clair pour toi mtnt mais bon ...
a+ ;)
hardgamer666
Messages postés8Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention22 juin 2007 21 mai 2007 à 20:53
Salut à tous;
Voilà, je viens de suivre le tuto du lien fourni plus haut, mais j'ai beaucoups de mal à utiliser la DLL avec Visual C++.Net 2003.
Il me refuse en effet soit de charger le DLL, soit de comprendre qu'il doit exécuter le fonction.
Donc, si vous connaisez un lien qui me permetrait d'apprendre l'utilisation et la création de fichiers DLL avec VC++.Net 2003, ce serrait simpas de m'en faire part
J'ai peut être pas assé chercher ou utiliser de mauvais mots clé, mais je suis dans le désespoir total.
Si vous saviez m'aider, un lien ou le titre d'un livre sur le sujet, qu'importe.
Un grand merci pour vos future réponces
Fred
Vous n’avez pas trouvé la réponse que vous recherchez ?
hardgamer666
Messages postés8Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention22 juin 2007 24 mai 2007 à 00:41
Bonjour tout le monde,
Escusez moi d'encor vous déranger, mais je viens de refaire le petit tuto donné en lien par Cosmobob et Visual Studio 2005 me dit tout simplement qu'il ne peut pas charger l'instruction hDLL = LoadLibrary ("TestDll.dll") car il ne peut convertire le premier paramètre ( donc le nom de la dll qui ce trouve apparament en const char[12] ) en un paramètre de type LPCWSTR.
Voici le message d'erreur que me donne VS2005:
error c2664: 'LoadLibraryW' : impossible de convertire le paramètre 1 de 'const char[12]' en 'LPCWSTR'
Par contre pour ce qui est de la dll, le compilateur ne me met aucune erreur ni avertissement
Donc, ma question est le suivante, que dois je faire. Je voudrais en effet pouvoir utiliser le support des dll pour tenter de créer un petit moteur 3D avec DirectX 9 ?
Si vous voulez les sources de mon travail, bien que j'ai suivi les instruction du tuto, dite moi simplement coment je puis les envoyer.
Entre parenthèse BruNews, tes liens on l'aire vraiment intéressent, mais mon traducteur fonctionne très mal, tu n'aurais pas un lien vers une version française de ça ? Ou un lien vers un site qui explique bien la création et l'utilisation des DLL avec VS 2005.