DLL 에서 static 변수 사용에 관한 이야기
View 15,599 | 작성일2010.05.23 16:01
관련링크
본문
기본적으로 DLL은 DLL을 참조하는 실행파일과는 프로세스가 다르기 때문에
static 변수를 실행파일과 공유할 수 없습니다. 서로 다른 영역의 메모리라
제대로 참조가 안됩니다. 원래는...
하지만 Visual C++ 컴파일 옵션에서 다중 쓰레드 DLL옵션으로 컴파일을 해주게 되면
DLL의 스태틱 영역을 서로 공유할 수 있습니다.
그렇게 되면 싱글턴 클래스 구조를 사용할 수도 있습니다.
물론 현재까지는 문제가 생기지 않았지만 100% 정상적으로 동작하리라는 보장은 없으니
그부분은 감수하고 쓰셔야 할것 같습니다.
만약 Static 공유없이 싱글턴을 만들려고 하면 외부에서 상속받아서 싱글턴 구조를 만들어야 하니 DLL패킹시에 많이 불리해지거든요.... 깔끔한 패킹은 좀 힘듭니다.
게다가 적지않은 STL 라리브러리 들은 static 을 사용하여 돌아가거든요.
그래서 다음엔 DLL에서 STL을 쓰는법을 적어보겠습니다.