이번에 개발하는 프로그램에서 Log 파일을 기록하려고 CLogFile이라는 클래스를 하나
만들었습니다.
그런데 이 클래스는 스레드문제로 인해서 제가 생성자에서 InitializeCriticalSection(&m_csKey)
소멸자에서 DeleteCriticalSection(&m_csKey)을 호출 합니다.
그리고 생성자에서 여러가지 작업을 해야 합니다.
그러니까 생성자 소멸자는 전역적으로 한번만 호출하고 실제 로그 파일을 기록하는 멤버 함수
SetLog() 함수만 필요한 곳에서 호출 하는 방법 입니다.
그렇게 위해서는 결국 전역 적으로 클래스의 인스턴스를 생성해야 했습니다.

그래서 결국 쓴 방법이

StdAfx.h 에서
extern CLogFile g_LogFile;
이라고 선언해 줬습니다.

그리고
StdAfx.cpp에서
CLogFile g_LogFile
이렇게 정의 해주고

필요한 곳의 파일마다 StdAfx.h을 인클루드 해서 사용하는 방법으로 해결봤습니다.
우선 테스트 하기로는 잘 되네요

ps. 조금 불편하더라도 StdAfx.h StdAfx.cpp에서 작성하는게 찜찜하다면 해당 .cpp
      파일에서 CLogFile g_LogFile; 해주시고 사용하실려는 .cpp 파일에서
      extern CLogFile g_LogFile이라고 해주셔도 됩니다.

posted by 뚱2