728x90
반응형
1. DLL 프로젝트 생성
# 공유 MFC DLL을 사용하는 기본 DLL
파일 용량은 작으나 MFC 관련 DLL 모두 배포해야 사용 가능
# MFC를 정적으로 링크한 기본 DLL
파일 용량이 커지지만 독립적 실행 가능
# MFC 확장 DLL
MFC 실행 파일만 사용 가능
2. DLL 소스 코드
# Message.h 헤더 생성
#pragma once
#ifdef DLL_EXPORT
#define SEARCH_DLLAPI __declspec(dllexport)
#else
#define SEARCH_DLLAPI __declspec(dllimport)
#endif
extern "C"
{
SEARCH_DLLAPI const void _ShowMessage(const char* pData);
}
# Message.cpp 생성
#include "StdAfx.h"
#define DLL_EXPORT
#include "Message.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
const void _ShowMessage(const char* pData)
{
CString sData(pData);
AfxMessageBox(sData);
}
3. 실행 프로젝트 적용
# 명시적 연결(Explicit Linking)
typedef char* (__cdecl *_ShowMessageFunc)(char* pData);
_ShowMessageFunc m_smBox;
void CMFCMainDlg::OnBnClickedOk()
{
// DLL 로드
HMODULE hModule = ::LoadLibraryA("DLL_240416.dll");
if (hModule == NULL) return;
// DLL 함수의 주소 검색
m_smBox = (_ShowMessageFunc)::GetProcAddress(hModule, "_ShowMessage");
// 함수 실행
m_smBox("메시지 출력!!!");
FreeLibrary(hModule);
CDialogEx::OnOK();
}
4. 프로젝트 속성
# MFC 사용
# 전처리기 정의
_AFXDLL : 공유 MFC DLL을 사용하는 기본 DLL 임을 의미
_USRDLL : MFC를 정적으로 링크한 기본 DLL 임을 의미
_AFXEXT : MFC 확장 DLL 임을 의미
# 런타임 라이브러리
MD(Multi-Threaded DLL) : CRT 라이브러리를 DLL로 제공
MT(Multi-Threaded) : CRT 라이브러리를 정적으로 연결하여 제공
728x90
반응형
'Programming > C++, MFC' 카테고리의 다른 글
C++, MFC。임시 폴더 경로 반환(GetTempPath) (0) | 2024.05.22 |
---|---|
C++, MFC。ANSI to UTF8, UTF8 to ANSI 문자열 인코딩 (0) | 2024.04.30 |
C++, MFC。텍스트 파일로 로그 생성(ofstream) (0) | 2024.04.11 |
C++, MFC。소요 시간 측정(time()) (0) | 2024.03.29 |
C++, MFC。현재 프로그램 실행 경로(GetModuleFileName) (0) | 2024.03.27 |