DLL 개발 및 호출 (2) - 내보내기 클래스를 만드는 Win32 DLL

2106 단어 Win32
내보내기 클래스의 Win32 DLL 만들기
DLL의 개발과 호출 (1) 은 함수 윈32DLL을 내보내는 생성 과정을 소개했는데, 이것도 가장 자주 사용하는 DLL이다.마찬가지로 DLL에 정의된 클래스는 응용 프로그램 프로세스에서도 액세스할 수 있습니다.Hello, World 화면을 표시하려면 다음과 같이 하십시오.화구화의 예를 들어 소개하다.
1. SayHello라는 Win32 DLL이라는 빈 항목을 만듭니다.2. [삽입|클래스]를 선택하여 팝업된 새 클래스 창에서 프로젝트에 대한 클래스 CsayHello를 만듭니다.클래스의 헤더 파일SayHello.h에서 키워드 사용declspec(dllexport)은 내보내기 클래스를 설명하고 관련 구성원 변수와 구성원 함수를 정의합니다.코드는 다음과 같습니다.
 
// SayHello.h

//



class _declspec(dllexport) CSayHello  

{

public:

    CSayHello();

    virtual ~CSayHello();

    void Say(char* szWords,int nLen);

    float Sum();

    void SetNum(float fNum1,float fNum2);

private:

    float fNo1;

    float fNo2;



};


클래스 구현 파일에서 다음과 같은 구성원 함수를 구현합니다.
 
//SayHello.cpp

//



#include "SayHello.h"

#include <string.h>



CSayHello::CSayHello()

{

    fNo1=fNo2=0.0;

}



CSayHello::~CSayHello()

{



}



void CSayHello::Say(char* szWords,int nLen)

{

    strcpy(szWords,"Hello,World!");

    strcat(szWords,"\0");

}



float CSayHello::Sum()

{

    return fNo1+fNo2;

}



void CSayHello::SetNum(float fNum1,float fNum2)

{

    fNo1=fNum1;

    fNo2=fNum2;

}


Debug 폴더에서 DLL 파일SayHello를 생성하는 프로젝트를 컴파일합니다.dll 및 가져오기 라이브러리 파일SayHello.lib.하면, 만약, 만약...def 파일에서 클래스를 내보내려면 클래스의 모든 함수나 변수를 내보내야 합니다.3. DLL을 호출한다.SayHello를 포함하는 DLL의 가져오기 라이브러리 파일을 창 클래스 헤더 파일에 로드합니다.h 헤더 파일 및 의 선언 CsayHello 클래스 객체입니다.코드는 다음과 같습니다.
 
#include "SayHello.h"

#pragma comment(lib,"SayHello.lib") 



class CTestDlg : public CDialog

{

// Construction

public:

    CTestDlg(CWnd* pParent = NULL);    // standard constructor

    CSayHello MySayHello;


이제 클래스 대상의 구성원 함수를 사용할 수 있습니다.DLL을 호출하는 내보내기 클래스와 DLL을 호출하는 내보내기 함수의 가장 큰 차이점은 프로그램에 내보내기 클래스를 포함해야 하는 헤더 파일입니다.따라서 SayHello.h、SayHello.dll 및 SayHello.lib을 호출자 프로젝트의 루트 디렉터리로 복사해야 제대로 실행할 수 있습니다.내보내기 클래스를 호출하는 DLL은 일반적으로 로드 시 링크됩니다.실행할 때 링크할 수도 있지만, 실행하기는 매우 번거롭다. DLL에서 모든 구성원 함수의 주소를 읽어야 하고, 보통 이 함수들의 이름은 미리 컴파일된 기호이며, DLL에서 함수를 다시 명명해야 할 수도 있다.
 

좋은 웹페이지 즐겨찾기