begin process at 2012 05 30 07:08:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

Queqleus questions au sujets des DLL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Queqleus questions au sujets des DLL

jeudi 12 janvier 2006 à 14:08:31 | Queqleus questions au sujets des DLL

jean84

Salut a tous !
je suis de plus en plus interesse par les DLL et l'envie d'en faire une pour mon prochain programme me titille... J'ai lu alors quelques docs :
- http://www.cppfrance.com/code.aspx?id=9915
- http://www.cppfrance.com/code.aspx?id=10539
et 2 ou 3 trucs dans le genre...

Depuis je me pose quelques questions ... a savoir si je creer une dll et que j'y colle cette fonction
extern "C" __declspec(dllexport) int addition(int a,int b)
{
     return a+b;
} (trouvee dans le premier tuto)
, est-ce que je peut juste la compiler et l'utiliser sans le .lib en appelant ma fonction dynamiquement ou faut-il que je change ma syntaxe ?? Quelle est la meilleure solution ?? Dans ma DLL, est-ce que je peut y mettre une classe et son implantation ?? Comme l'utilise-t-on apres ???

Merci de repondre a mes questions !!
@++


"Avant même de fonctionner, tout programme est déjà obsolète."
jeudi 12 janvier 2006 à 14:31:45 | Re : Queqleus questions au sujets des DLL

DeAtHCrAsH

Réponse acceptée !
Pour ta première question, oui tu peux utiliser ta dll telle quelle avec un chargement dynamique, à condition que tu ais bien implémenter le DllMain.

Sinon pour l'histoire des classes, tu ne pourras pas te servir d'une classes pour créer des objet en dehors de la dll, pour la simple et bonne raison que celle ci est charger en mémoire et qu'il n'y aua donc aucun lien entre la classe et les objets crées.

Shell
jeudi 12 janvier 2006 à 15:33:01 | Re : Queqleus questions au sujets des DLL

ymca2003

Il est possible d'exporter des classes d'une dll (MFC en liaison non statique est fait comme cela).
Mais comme en c++ il  a de la décration de nom (le nom des fonctions et méthodes réellement exportées contiennent des informations sur la classe, les accès, les type de paramètres...) et que cette décoration est propre à chaque compilo, la dll et le .lib généré ne seront utilisable qu'avec le même compilo.

exemple :

MyDll.h

#ifndef MYDLL_H
#define MYDLL_H

#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

class MYDLL_API CDllClass
{
public :
 
 void HelloWorld();
};
#endif // MYDLL_H

MyDll.cpp

#include <windows.h>
#define MYDLL_EXPORTS
#include "MyDll.h"


void CDllClass::HelloWorld()
{
 MessageBox(NULL, "Hello World", "MyDll", MB_OK);
}

TestDll.cpp

#include <windows.h>

#include "MyDll/MyDll.h"
#pragma comment(lib, "MyDll.lib")

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
 CDllClass dllobj;

 dllobj.HelloWorld();
 return 0;
}

Explications :

- MYDLL_EXPORTS doit être défini au début de tous les fichiers sources de la dll (peut être mis dans les options de compilation)
- MyDll.lib doit être rajouté au librairie du linker (avec le #pragma ou dans les options de link).
- MyDll.dll sera chargée automatiquement au démarrage du prog et doit se trouver dans le même répertoire que l'exe.

Avec Visual, il y a un outils appelé depends.exe qui permet de voir les fonctions exportées d'une dll. Si tu ouvres MyDll.dll avec ce prog, et que tu as compilé avec Visual 6.0 tu devrais avoir 2 fcts exportées du genre :
??4CDllClass@@QAEAAV0@ABV0@@Z
?HelloWorld@CDllClass@@QAEXXZ

ce qui correspond aux méthodes suivantes si tu active l'option C++ (versions 2.1 de depends)
class CDllClass & CDllClass::operator=(class CDllClass const &)
void CDllClass::HelloWorld(void)


vendredi 13 janvier 2006 à 11:13:27 | Re : Queqleus questions au sujets des DLL

jean84

J'avoue que je n'ai pas tout compris au dernier post .... surtout au code en tout cas je crois que c'est plus qu'il ne m'en faut !! j'utiliserai ma DLL qu'avec des fonctions simples et je vais eviter d'y coller mes classes... je crois que pour l'instant vu mon niveau c'est le mieux.... merci a vous deux d'avoir pris le temps de me repondre !!
@++

"Avant même de fonctionner, tout programme est déjà obsolète."
vendredi 13 janvier 2006 à 14:33:11 | Re : Queqleus questions au sujets des DLL

ymca2003

Réponse acceptée !
En fait les classes et leurs methodes sont exportées comme des fonctions 'simples' sauf qu'elles ont un nom un peu bizarre que le compilo et le llinker comprend pour déterminer la classe et les types des param, indispensable au c++.

Il est tout de même préferrable de ne pas exporter des classes pour les problème de compatibilité entre compilo et linker.
lundi 3 avril 2006 à 22:52:40 | Re : Queqleus questions au sujets des DLL

volkukan

Salut!!!
Je ne sais pas ou vous trouver le cours vous permettant de comprendre la façon de coder une dll. Je suis fatiguer de chercher des tutos sur google. Pourtant sa dois pas etre quelque chose de peu demander.
Je n'ais pas acces au doc du forum. 
Pouvez vous m'orientez svp
merci davance
mercredi 5 avril 2006 à 09:58:55 | Re : Queqleus questions au sujets des DLL

jean84

perso moi j' ai trouve une doc sur moteurprog.com. Il suffit de chercher un peu. Elle est pas mal sans s'extasier non-plus...

@+

"Avant même de fonctionner, tout programme est déjà obsolète."
mercredi 5 avril 2006 à 10:16:55 | Re : Queqleus questions au sujets des DLL

jean84

J'ai chercher un peu sur le net et voici ce que j'ai trouvee. sa peut etre interessant, a toi de voir :
- http://www.games-creators.org/wiki/Cr%C3%A9ation_et_utilisation_de_DLL
- http://www.cppfrance.com/code.aspx?ID=28571
- http://www.laboratoire-microsoft.org/articles/dev/dll/1/

Normalement sa devrait bien t'aider, c'est simple et d'approche facile.

@++

"Avant même de fonctionner, tout programme est déjà obsolète."


Cette discussion est classée dans : int, dll, questions, sujets, queqleus


Répondre à ce message

Sujets en rapport avec ce message

Exporter une classe dans une DLL... [ par Clovis ] Salut,Je voudrais pouvoir exporter dans une DLL, si c'est possible, les fonctions et les objets du listing suivant. Car, je voudrais, par la suite pou Probleme de Dialog VC++ [ par anaya ] Bonjour,J'espere bien que vous allez m'aider, voila mon probleme:Mon programme marche a merveille avec Domodal(); mais moi je dois utiliser autre cho Pour les doués, moi j'en peu plus ! [ par sena ] Salutje voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)Par exemple une f utiliser en vb++ une dll faite en c++ [ par jon26 ] Bonjour, je me casse la tête à tenter d'appeler une fonction de ma dll vc++ 6.0 en vb6.0.Voici le code de ma fonction exemple dans la dllextern "C" __ Import DLL ? [ par DeAtHCrAsH ] J'ai une DLL dans laquelle j'ai crée une classe.J'aimerai maintenant importer la classe dans mon executable de maniere dynamique ?Ma classe est défini Chargement DLL [ par Chapi72 ] Bonjour,j'essaie juste de charger une DLL dans un pg C++ (en visualC++)Voici mon code:HINSTANCE hDLL = LoadLibrary("SpotCam.dll");typedef int(WINAPI * ArrayList (C#) vers int ** [ par typhoonx ] Bonjour, je voudrai réaliser une conversion d'un ArrayList contenant un ArrayList pour chaque case du premier ArrayList en int ** dans le but d'appele linker une dll sous dev-c++ [ par the diouk ] petite question toute bête mais qui me gêne :j'utilise une DLL, dans ma source il y a bien :#define TRUCDLL "TRUC.dll";le prototype de la fonction :in TRI A BULLE avec une .DLL ...::PAS FACILE::... :'( [ par natacha20 ] bonjour tout le monde, j'ai en problème en c++, si qq peut m'aider... En fait je fais un projet en vb qui a un tableau de 10 cases (dans chaque case g Aide [ par eikonos ] Je travail sur une dll appellé psfg.dllj'ai ces lignes suivant de codetypedef struct CAMERAPARAM_tag{int nGain;int nOffset;int bOffsetFix;int nUpperLi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales