수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620707
  • Today | 87
  • Yesterday | 482

Programming/MFC2007/03/21 10:02

MFC 라이브러리에 동적으로 링크된 정규 DLL

원본 : http://www.debuglab.com/knowledge/mfcdll.html

1.요약

MFC 라이브러리에 DLL을 동적으로 링크하는 방법을 알아보도록 합니다.


2.본문

마이크로소프트는 DLL을 크게 동적으로 링크된 DLL과 MFC 라이브러리에 정적으로 링크된 DLL의 두 가지로 분류해 놓았다. 다음의 예는 마이크로소프트에서 제공한 MFC 라이브러리에 DLL을 동적으로 링크할 수 있도록 수정해 주는 내용이다.

정규 DLL은 내부적으로 MFC를 사용하도록 동적으로 MFC 라이브러리에 링크된 DLL이다. 내보내지는 DLL 함수들은 MFC로 호출되거나 MFC 실행 가능 프로그램이 아닌 경우 다음과 같은 형태를 취하게 된다.

- DLL은 MFC DLL에 동적으로 링크되어 있다.
- DLL을 지원하는 언어를 사용한다면 호스트 프로그램은 DLL을 사용할 수 있고, 꼭 MFC 기반의 프로그램이 아니어도 괜찮다.
- 이 DLL에 링크되는 MFC import 라이브러리는 확장 DLL에 이용되는 것과 동일하거나, MFC DLL을 사용하는 프로그램이다.

정규 DLL을 MFC에 동적으로 링크하기 위해서는 다음의 조건을 만족해야 한다.

1. 정규 DLL은 반드시 CWinApp 파생 클래스와 그 프로그램 클래스의 단일 객체 클래스를 가져야 한다. DLL의 CWinApp 객체는 주된 메시지 펌프를 가지고 있지 않다. 이로 인해 CWinApp 객체와 일반적인 프로그램간에 차이가 발생한다.
2. _AFXDLL가 정의된 상태로 DLL이 컴파일 되어야 한다. 이것은 동적으로 MFC DLL에 링크된 실행 프로그램에 _USRDLL이 정의되는 것과 비슷하다.
3. DLL은 CWinApp 파생 클래스의 실행 예로 설명되어야 한다.
4. MFC에 의해 지원되는 DllMain을 사용해야 한다. 모든 DLL 초기화 코드는 InitInstance() 멤버 함수에 위치하고, 종료 코드는 ExitInstance() 멤버 함수에 위치해야 한다.
5. DLL에서 가용한 모든 함수의 첫 부분에는 AFX_MANAGE_STATE 매크로를 사용해야 한다. 이것은 DLL의 타입이 MFC 버전의 DLL을 사용하기 때문이다.

MFCx0.dll 과 MSVCRT.dll(혹은 비슷한 파일들)은 프로그램과 함께 배포되어야 한다.

표준 C 인터페이스를 사용해 정규 DLL로부터 심볼들을 내보낼 수 있다. 그 인터페이스는 다음과 같은 형태로 주어진다.

extern "C" __declspec(dllexport) ExportFunctionName();
정규 DLL내의 모든 메모리 위치 지정은 반드시 그 DLL 내부에 있어야 한다.

MFC에 동적으로 링크된 DLL은 MFC 모듈 상태를 정확히 바꾸기 위해 AFX_MANAGE_STATE 매크로를 사용한다. 이 코드는 DLL로부터 내보내지는 모든 함수의 첫머리에 다음과 같은 형태로 추가되어야 한다.

AFX_MANAGE_STATE(AfxGetStaticModuleState())
이 매크로는 정적으로 MFC에 링크된 확장 DLL이나 정규 DLL에 사용되어서는 안된다.


3.예제



4.참고

- DeBUGGING C++(번역서) 475~476 페이지



- 2001.08.19 Smile Seo -
"MFC" 카테고리의 다른 글
  • Dll Rebase 시키기 (0)2007/03/21
  • Delayload 적용시키기 (0)2007/03/21
  • MFC 라이브러리에 동적으로 링크된 정규 DLL (0)2007/03/21
  • 대용량의 파일 순식간에 읽기 (0)2007/03/21
  • Edit 컨트롤에서 Tab 키 넣기 (0)2007/03/21
2007/03/21 10:02 2007/03/21 10:02
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2718

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 520 521 522 523 524 525 526 527 528 ... 2998  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 대용량 파일
  • Edit
  • 강원대학 교기
  • 성능
  • Property
  • ADODB
  • 스노우보드
  • Ontology
  • 올림픽 공원
  • Web 2.0
  • Text
  • 군집 분석
  • CFile
  • HBITMAP
  • 사용자 로그인 정보
  • Registry Key
  • 썸씽 스페셜
  • 터미널 장치 파일
  • 캐시
  • Ajax

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.