쉽게 연상할수 잇는 차이점은 DLL 내에 MFC 의 함수들을 싣을 것인지 아닐지를 결정하는 내용이라는 것이다. 즉 만들 DLL 안에 MFC의 각종 실행 로직이 들어가게 디면 Static 아니면 Shared 가 되는 것이다.
프로그램을 만들때는 큰 차이가 없다가, 실제 릴리즈 할때, 이 프로그램이 실행되는 환경에,
해당하는 버젼의 MFC.DLL이 없으면 실행이 안된다.
하지만, Shared 인경우 해당하는 프로그램이 상당히 Light 해진다. 즉 실행 모듈을 싫지 않기 때문에 얻어지는 최대의 장점이다. MFC ㅁ모듈을 사용하는 양에 따라 달라지지만, 대개 100K 짜리를 기준으로 한다면 MFC를 Shared 하게 되면 70~80%의 경감을 가져온다.

하지만, Shared 에 또다른 문제가 있으니, 그것이  바로 Resouce 문제다.
Shared를 택하게 되면 이 DLL을 부르는 Main 프로그램과 Resouce를 겹쳐서 사용하게 되는 문제가 있다. 그래서 DLL내의 리소스를 사용하려면, 현재 사용중인 HINSTANCE를 DLL쪽으로 맞추어 주어야 한다.
현재 Main의 HINSTANCE를 get 해와서 저장하고, DLL의 HINSTANCE를 현재 HINSTANCE로 변경해서 DLL내의 리소스를 사용하고 난뒤, 다시 저장해 놓았던 Main의 HINSTANCE를 현재 HINSTANCE로 변경해야 한다.

그러나 Static으로 하게되면 이 리소스 마저 분리되는 것 같다. 아무런 문제없이 사용가능하게 된다.
어떤것을 사용할지는 상황에 맞게 해야 겠지만, 일단, FlexBuilder에서는 그냥 Static을 우겨야 겠다.
728x90

+ Recent posts