/******************************************************************/
/* Regular DLL using shared MFC DLL 첫번째 방법
/******************************************************************/
1. 프로젝트를 생성한다.
[MFC AppWizard(dll)] -> [Regular DLL using shared MFC DLL] -> [Finish]
2. 새로 생성된 프로젝트의 소스에서 맨 밑에 추가
.....
CMFC0808App::CMFC0808App()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CMFC0808App object
//추가
extern "C" __declspec(dllexport)
double Square( double d)
{
return d * d;
}
3. 컴파일 하면 dll파일 생성된다.
4. 다이얼로그 베이스의 새로운 프로젝트를 생성.
dll파일을 새로 만들 프로젝트에 복사해서 붙여 넣는다.
5. 에디트 박스 두개와 버튼을 만든다.
- IDC_EDIT1 : 입력 받는 에디트 박스( 컨트롤 변수 생성 : m_dInput, double형 )
- IDC_EDIT2 : 결과 출력할 에디트 박스( 컨트롤 변수 생성 : m_dOutput, double형 )
- IDC_BUTTON1 : 버트 눌렀을때 Square함수 호출
6. OnInitDialog에서
if( (m_hDll = LoadLibrary("MFC0808.dll")) == NULL )
{
AfxMessageBox( "dll파일이 존재하지 않습니다. " );
}
7. OnDestroy에서
FreeLibrary( m_hDll );
8. 해더 파일에서
HINSTANCE m_hDll; //추가
9. OnButton1에서 (IDC_BUTTON1)
double (*pSquare)(double);
if( !(pSquare = (double(*)(double))GetProcAddress(m_hDll, "Square")) )
{
AfxMessageBox( "Square함수가 존재하지 않습니다." );
}
UpdateData( TRUE );
m_dOutput = (*pSquare)(m_dInput);
UpdateData(FALSE);
/******************************************************************/
/* Regular DLL using shared MFC DLL 두번째 방법
/******************************************************************/
1. 새로운 프로젝트를 생성한다.
[MFC AppWizard(dll)] -> [Regular DLL using shared MFC DLL] -> [Finish]
2. 새로 생성한 프로젝트에서 해더파일 추가
Square.h
3. Squart.h에서
#include <windows.h>
extern "C" __declspec(dllimport)
double Square( double d);
4. 소스에서
#include "Square.h"
.....
CMFC0808App::CMFC0808App()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CMFC0808App object
CMFC0808App theApp;
//추가
extern "C" __declspec(dllexport)
double Square( double d)
{
return d * d;
}
5. 컴파일 하면 dll파일과 lib파일 생성
6. 다이얼로그 베이스의 새로운 프로젝트를 생성.
dll파일, lib파일, Square.h파일을 복사해서 붙여 넣는다.
7. 에디트 박스 두개와 버튼을 만든다.
- IDC_EDIT1 : 입력 받는 에디트 박스( 컨트롤 변수 생성 : m_dInput, double형 )
- IDC_EDIT2 : 결과 출력할 에디트 박스( 컨트롤 변수 생성 : m_dOutput, double형 )
- IDC_BUTTON1 : 버트 눌렀을때 Square함수 호출
8. 소스에 해더파일과 lib파일 링크 추가
#include "Square.h"
9. OnButton1에서 (IDC_BUTTON1)
UpdateData( TRUE );
m_dOutput = Square(m_dInput);
UpdateData(FALSE);