JHB의 프로그래밍 삽질기

[MFC] 리소스가 꼬이는 문제 본문

PROGRAMMING/C C++ MFC

[MFC] 리소스가 꼬이는 문제

roter 2011.08.19 16:49

DLL프로젝트가 여러개 있다.
예를 들어 A와 B 이렇게 두개가 있다.
둘다 resource.h가 있고, 각자의 rc파일이 있다.

그런데..
B에서 LoadString으로 String Table에 있는 것을 읽어오려했는데.. 오잉..? A에 있는 스트링 테이블 값을 참조한다.

우째 이런일이?
이를 해결하기 위해선

MFC Extension DLL로 DLL을 만든 경우, LoadString이나 LoadBitmap시에 어느 리소스에서 값을 가져오는지를 알아야 한다.
DLL과 그를 호출한 EXE가 있을 경우, 리소스 아이디가 중복 되는 경우에는 LoadXXX 함수는 EXE의 리소스에서 값을 읽어오게 된다. http://support.microsoft.com/kb/600771/ko에 따르면
"이것은 MFC에서 resource를 찾는 순서가 Extension DLL 인 경우 EXE file의 resource를 가장 먼저 살펴 보고 여기에서 발견이 안된 경우에 Extension DLL resouce를 그리고 마지막 으로 MFC DLL resource를 찾게되기 때문이다."
라고 돼있다.

근데 경험적으로 볼 때, 꼭 EXE는 아니고, 일반적으로 말해서 '자신을 호출한 녀석'의 리소스를 먼저 찾는 듯 싶다.

따라서 리소스를 쓸 때는 값이 절대 겹치지 않게 잘 설계해야겠다.
0 Comments
댓글쓰기 폼