프로그래밍/PowerBuilder

MFC로 DLL만들기 및 다이얼로그 파워빌더와 연동하기(1)

MAKING_ 2020. 10. 31. 08:37
반응형

많은 분들이 External 펑션으로 dll에 있는 함수들을 이용하게 되는데요.

dll을 이용을 하시다보면 너무 많은 dll을 필요로 하게 되거나, 심지어는 파워빌더에서 이용할 수 없는 함수가 있는 경우도 생깁니다. 이럴 경우 api dll을 만드시거나 mfc dll을 생성하시게 되는데요. 만드는 방법이 많은 분들은 아시겠지만,

모르는 분들을 위해 한 번 정리해 보도록 하겠습니다. 추가해서 다이얼로그 박스도 띄워보도록 하겠습니다.

 

기준은 Visual Studio 2005로 하겠습니다.(물론 이거 보셔도 6.0으로 이해하실 수 있을 거에요.)

 

파일 새 프로젝트에서 MFC -> MFC DLL을 선택하고 이름은 PBDLL_TEST로 하였습니다.

(폴더 같은거는 알아서 정해주시면 되겠죠.)

 

 

확인을 클릭하시면 위와 같은 창이 뜨게 됩니다. 다음을 클릭!

 

<?xml:namespace prefix = o />

 

 

위와 같은 창이 뜨면 중요한 것은 빨간색 줄 친 부분입니다. 디폴트는 위에 공유 MFC 인데,

이렇게 하면 나중에 MFC가 돌아가는데 필요한 DLL을 배포해야 하니 DLL Size가 좀 크더라도

DLL만 배포하기 위해서 두번째 옵션을 선택해 주셔야 합니다.

필요로, 소켓 같은거 쓰시려면 추가 기능에서 체크 해주시면 됩니다.

생성되는 파일을 보면

 

 

PBDLL_TEST.h

 

    해당 DLL의 기본 헤더파일이며, CPBDLL_TESTApp 클래스가 선언되어 있습니다.

 

 

PBDLL_TEST.cpp

 

    기본 DLL 소스파일 입니다. CPBDLL_TESTApp 클래스가 포함되어 있습니다.

 

 

PBDLL_TEST.rc

 

    프로그램에서 사용하는 모든 Microsoft Windows 리소스의 목록입니다.

    여기에는 RES 하위 디렉터리에 저장된 아이콘, 비트맵 및 커서가 포함됩니다. 이 파일은

Microsoft Visual C++에서 직접 편집할 수 있습니다.

 

 

res\PBDLL_TEST.rc2

 

    이 파일에는 Microsoft Visual C++ 이외의 다른 도구에서 편집한 리소스가 포함되어

있습니다. 리소스 편집기로 편집할 수 없는 모든 리소스는 이 파일에 넣어야 합니다.

 

 

PBDLL_TEST.def

 

    이 파일에는 Microsoft Windows에서 실행되기 위해 제공해야 하는 DLL에 대한 정보가 포함

되어 있으며, DLL의 이름 및 설명과 같은 매개변수가 정의되어 있습니다. 또한 DLL에서 함수

도 내보냅니다.

 

간단하게 파워빌더에서 호출할 함수를 하나 만드는 법을 살펴보죠.

PBDLL_TEST.cpp에서 작성하게 되며 위치는 관련이 없습니다.

extern "C" BOOL PASCAL EXPORT로 시작을 하면 됩니다. 간단하게 메시지 박스를 하나 띄우도록

하겠습니다.

 

 

먼저 하실거는 옵션을 셋팅 해주셔야 됩니다.

메뉴  프로젝트  속성  일반에 보시면

문자집합이 유니코드로 되어 있는데 이걸 멀티바이트로 바꿔주셔야 합니다.

 

 

그리고 함수는 아래와 같이 작성하였습니다.

extern "C" BOOL PASCAL EXPORT TestMsgBox()

{

 

        AFX_MANAGE_STATE(AfxGetStaticModuleState());

 

        MessageBox(0, "메세지박스테스트.","확인", MB_OK);

        return 0;

 

}

 

 

 

함수 작성은 끝났습니다.

 

이제 외부함수로 내보낼 함수 이름을 PBDLL_TEST.def에 지정하셔야 합니다.

PBDLL_TEST.def 파일을 여시고,

 

위와 같이 TestMsgBox 를 한 줄 추가해 줍니다.

그리고 메뉴  빌드  솔루션 다시 빌드로 풀빌드를 해주시면 Visual Studio에서의 작업은

끝나게 됩니다.

 

 

그리고 처음에 지정했던 폴더에 가보시면 PBDLL_TEST.dll 이 생성이 되어 있습니다.

 DLL을 파워빌더 작업할 폴더에 복사해주시면 됩니다.

이제 파워빌더로 돌아가 보죠.

 

 

해당 윈도우는 아래와 같이 디자인 하였습니다.

 

윈도우의 익스터널 펑션 부분에

DLL의 함수를 선언해 줍니다.

FUNCTION Boolean TestMsgBox() LIBRARY "PBDLL_TEST.dll"  ALIAS FOR "TestMsgBox;ansi"

 

 

 

그리고 DLL 호출 버튼의 Clicked Event에서 함수를 호출합니다.

cb_1  Clicked() 이벤트

TestMsgBox()

 

 

 

실행 해 본 결과는 아래와 같습니다.

 

어떻습니까? 간단하죠? MFC DLL을 생성해서 함수만 하나 추가 해줬을 뿐입니다.

다음 번에는 이 DLL에서 다이얼로그까지 띄우는 것을 해보도록 하겠습니다.

 

반응형