/******************************************************************/

/* 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);

+ Recent posts