[개발/VC++] 리소스 DLL 만들기
리소스 전용 DLL은 아이콘, 비트맵, 문자열 및 대화 상자 등의 리소스만 들어 있는 DLL입니다. 리소스 전용 DLL을 사용하면 여러 프로그램 간에 동일한 리소스 집합을 쉽게 공유할 수 있습니다. 여러 언어로 지역화된 리소스가 있는 응용 프로그램을 제공하는 것도 좋은 방법입니다(MFC 응용 프로그램의 지역화된 리소스: 위성 DLL 참조).
리소스 전용 DLL을 만들려면 새로운 Win32 DLL(비 MFC) 프로젝트를 만든 다음 이 프로젝트에 리소스를 추가합니다.
-
새 프로젝트 대화 상자에서 Win32 프로젝트를 선택한 다음 Win32 프로젝트 마법사에서 DLL 프로젝트 형식을 지정합니다.
-
해당 DLL에 사용할 문자열 또는 메뉴와 같은 리소스가 포함된 새 리소스 스크립트를 만든 다음 .RC 파일로 저장합니다.
-
프로젝트 메뉴에서 기존 항목 추가를 선택한 다음 새로 만든 .rc 파일을 프로젝트에 삽입합니다.
-
/NOENTRY 링커 옵션을 지정합니다. /NOENTRY 옵션은 링커가 _main에 대한 참조를 DLL에 링크하지 않도록 하며, 리소스 전용 DLL을 만들 때 반드시 사용해야 합니다.
-
DLL을 빌드합니다.
리소스 전용 DLL을 사용하는 응용 프로그램은 LoadLibrary를 호출하여 명시적으로 DLL에 링크해야 합니다. 리소스에 액세스하려면 모든 종류의 리소스에 대해 작동하는 일반 함수인 FindResource 및 LoadResource를 호출하거나 다음과 같은 특정 리소스 관련 함수 중 하나를 호출해야 합니다.
-
FormatMessage
-
LoadAccelerators
-
LoadBitmap
-
LoadCursor
-
LoadIcon
-
LoadMenu
-
LoadString
응용 프로그램이 리소스 사용을 마친 경우에는 FreeLibrary를 호출해야 합니다.
개념
============================================
※ 빌드하기 전에 프로젝트->속성->링커->명령줄 메뉴에서 추가옵션란에 "/NOENTRY" 옵션을 추가해준다.
릴리즈 모드로 컴파일해서 *.dll 생성된 파일을 확인후 리소스 DLL 사용
사용예:
HMODULE hRes = NULL;
hRes = LoadLibrary("cs.dll");
// hRes NULL이 아니면 성공
LoadString(hRes, IDS_STRING101, str, 256);
hMenu=LoadMenu(hRes, "IDR_MENU1");
'IT-개발,DB' 카테고리의 다른 글
[개발/VC++] CreateThread(), _beginthread(), _beginthreadex() 에 관하여 (0) | 2011.04.01 |
---|---|
[개발/VC++] ShellExecuteEx, CreateProcess, 연결된 프로그램, 디폴트 브라우저 (0) | 2011.03.31 |
[개발/MFC] WM_TIMER 예제 (0) | 2011.03.23 |
[개발/MFC] UTF8로 파일저장하기 (0) | 2011.03.22 |
[개발/VC++] 응용 프로그램 구성이 올바르지 않기 때문에 ... (0) | 2011.03.21 |
댓글