Dll en C++

Dll en C++ - Programmation

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 ;)

Reply

Marsh Posté le 07-10-2001 à 19:00:35   

Reply

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.

Reply

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 ...

Reply

Marsh Posté le 07-10-2001 à 20:31:43    

:pt1cable:  :hap:

Reply

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.

Reply

Marsh Posté le 07-10-2001 à 20:58:21    

c pas une super conception d'un prog je trouve

Reply

Marsh Posté le 07-10-2001 à 21:07:09    

Je crois que t'a raison. Je devrais plutot changer de conception.

Reply

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

Reply

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 ?

Reply

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?

Reply

Marsh Posté le 07-10-2001 à 21:15:59   

Reply

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.

Reply

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

Reply

Marsh Posté le 07-10-2001 à 21:54:30    

Na, c un choix perso ! Je respecte les préfixes hongrois :)

Reply

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.


---------------
Si t'es pas net, reste a la buvette
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed