[c++] DLL fichier de logs

DLL fichier de logs [c++] - C++ - Programmation

Marsh Posté le 05-12-2005 à 17:31:29    

bonjour!
 
j'ai un exe qui appelle des DLLs et je voudrais que ces DLL et l'exe logguent des trucs dans un fichier, mais je ne sais pas trop quelle est la bonne methode pour faire ça...
 
je pense que si l'exe a en charge la gestion du fichier de log et qu'ensuite si je pouvais passer le pointeur vers mon instance de ma classe de log a mes DLL ça pourrait être pas mal non?  
 
merci

Reply

Marsh Posté le 05-12-2005 à 17:31:29   

Reply

Marsh Posté le 05-12-2005 à 19:28:28    

pour l'instant j'ai juste mis un "CLog toto" global et un "CLog* pToto = &toto". dans mon fichier main .
 
et j'ai fait un "extern CLog *pToto" dans ma dll.  
là j'ai des erreurs de linkage en recompilant ma dll:
 
unresolved external symbol "public: __thiscall CLog::CLog(void)
pareil pour le destructeur "
 
qu'est ce qui ne va pas la dedans? Je ne comprends pas:/

Reply

Marsh Posté le 06-12-2005 à 11:34:26    

ton exe n'exporte pas les méthodes de CLog, et elles doivent etre déclarées mais pas définies dans la dll.
 
Fonctionne peut-etre par interface ? (une classe avec des méthodes virtuelles pures)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 06-12-2005 à 12:55:58    

j'ai fait un include de mon log.h dans le main de ma dll... donc a priori il ya les déclarations, mais il a besoin de l'implementation du constructeur et du destructeur, et là je ne comprend pas pourquoi...

Reply

Marsh Posté le 06-12-2005 à 12:59:30    

tu n'as pas de déréférenciation et de copies de toto dans ta dll ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 06-12-2005 à 13:54:46    

c'est quoi une déréférenciation?
 
ya juste ça...
 
voila ma dll qui me renvoie une erreur de link sur le constructeur et le destructeur de ma classe de log:
 
maDLLMain.obj : error LNK2001: unresolved external symbol "public: __thiscall CLogFile::CLogFile(void)" (??0CLogFile@@QAE@XZ)
maDLLMain.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CLogFile::~CLogFile(void)" (??1CLogFile@@UAE@XZ)
Debug/maDLL.dll : fatal error LNK1120: 2 unresolved externals
 
fichier maDLLMain.cpp

Code :
  1. #include "stdafx.h"
  2. #include "..\common\Logfile.h"
  3. extern CLogFile *g_pLogFile;
  4. BOOL APIENTRY DllMain( HANDLE hModule,
  5.                        DWORD  ul_reason_for_call,
  6.                        LPVOID lpReserved
  7.      )
  8. {
  9.     switch (ul_reason_for_call)
  10. {
  11.  case DLL_PROCESS_ATTACH:
  12.  case DLL_THREAD_ATTACH:
  13.  case DLL_THREAD_DETACH:
  14.  case DLL_PROCESS_DETACH:
  15.   break;
  16.     }
  17.     return TRUE;
  18. }


 
et mon exe qui compile bien:

Code :
  1. #include "stdafx.h"
  2. #include "..\..\common\LogFile.h"
  3. CLogFile g_LogFile;
  4. CLogFile *g_pLogFile = &g_LogFile;
  5. #define LOG(x,y)  g_LogFile.WriteLog(x,y)
  6. int APIENTRY WinMain(HINSTANCE hInstance,
  7.                      HINSTANCE hPrevInstance,
  8.                      LPSTR     lpCmdLine,
  9.                      int       nCmdShow)
  10. {
  11. g_LogFile.OpenLogFile("Log.txt" );
  12. ...

 
 
Je compile le tout avec Visual 6,
 

Reply

Marsh Posté le 06-12-2005 à 15:06:45    

je comprends pas trop pourquoi il a besoin du constructeur et du destructeur, il les veut peut-etre d'office des que tu fais référeces a une classe.
sinon, je comprends pas trop non plus pourquoi tu n'as pas une erreur de symbole non résolu sur g_pLogFile dans la dll


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 06-12-2005 à 16:10:51    

autant pour moi ! J'ai viré des includes pour pas trop charger mon post sur le forum et j'ai viré les includes  du "main" de mon exe ! dans ce .h il yavait la definition des macros et aussi de la variable g_LogFile -->ERRREUUURRREE !
 
du coups c'est pour ça qu'il voulait le le constructeur et le destructeur :pt1cable:  J'ai juste viré l'include et ca marche! J'ai du mal ! désolé.   :jap:

Reply

Sujets relatifs:

Leave a Replay

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