Dll en C++ - Programmation
Marsh Posté le 07-10-2001 à 19:41:04
C'est ptet pas très clair:
En fait, je veux déclarer des fonctions dans ma Dll mais leur définition doivent être écrites dans le code du programme qui utilise la Dll.
Marsh Posté le 07-10-2001 à 19:44:58
non, c'est vraiment pas clair.
en général la dll contient du code 'autonome' (ou dépendant d'autres dll) qu'un programme principal appelle.
utiliser dans la dll des fonctions écrites dans le programme ... hmmm pas bien bon ça. apparemment il te faut plutôt deux dll : une de base qui contient tes fonctions, la deuxième qui utilise la première, et l'exe qui utilise les deux.
enfin tu devrais plutôt détailler ce que tu veux faire ...
Marsh Posté le 07-10-2001 à 20:50:29
En fait, dans la dll j'initialise de nombreux éléments puis je veux appeller une fonction (écrite dans le prog qui utilise la dll) pour que l'on puisse ajouter du code dans l'initialisation.
Marsh Posté le 07-10-2001 à 21:07:09
Je crois que t'a raison. Je devrais plutot changer de conception.
Marsh Posté le 07-10-2001 à 21:11:53
good choice
une dll qui appelle une fonction du prog... quoique que avec un callback mais fo voir l'usage que tu va en faire
Marsh Posté le 07-10-2001 à 21:13:07
le plus simple à faire : tu dérives de CEngine.
dans ton .exe :
// .h
class CEngine2 : public CEngine
{
virtual HRESULT Initialization();
};
// .cpp
HRESULT CEngine2::Initialization()
{
CEngine::Initialization();
// init en plus ...
}
//
sinon, passer en paramètre d'init une callback qui sera appelée ...
//
et au fait tu ajouter quoi comme code d'init ?
Marsh Posté le 07-10-2001 à 21:15:59
la tu appelle la dll mais comment la dll appelle le prog?
et pkoi pas callback?
Marsh Posté le 07-10-2001 à 21:29:11
Merci de vos conseils mais je suis convaincu que je m'y prend mal. Je vais faire autrement.
Marsh Posté le 07-10-2001 à 21:35:06
chite question comme ca:
c a cause des MFC que tu met un C devant les noms de class ou c un choix perso
Marsh Posté le 08-10-2001 à 10:24:57
Je pense que tu veux parler de fonctions virutelles pures (qui t'oblige a reécrire une partie de ta classe dans ton prg)...Je vois que ca...
Avec une simple fonctions virtuelles tu es obligé de définir une fonction par defaut.
Marsh Posté le 07-10-2001 à 19:00:35
J'ai un problème avec le C++, car j'obtient des erreurs de Link LNK2001.
Je crée une dll et ce que je veux, c'est créer une classe ayant des méthodes appellées au sein de la dll mais dont la définition se trouve dans le programme.
Je pense que je ne doit pas utiliser le mot clé 'virtual' pour réaliser ce que je veux...
Voilà mon code:
#ifdef ENGINE_EXPORTS
#define ENGINE_API __declspec( dllexport )
#else
#define ENGINE_API __declspec( dllimport )
#endif
class ENGINE_API CEngine
{
virtual HRESULT Initialization();
virtual HRESULT FrameMove();
public:
CEngine( void );
~CEngine();
virtual LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
};
Merci