MFC 컨트롤 및 dll 호출 생성

2153 단어
이전에 dll방면의 공사를 해 본 적이 없지만 최근에 필요로 하기 때문에 이 방면의 일을 했습니다. 아무것도 모르고 드디어 해냈습니다. 그 동안 많은 분들께 물어봤는데 여러분들이 주신 방식이 달라서 저는 머리가 핑 돌았습니다.마침내 그 속의 이치를 조금 알게 되었다.dll을 하려면 먼저 dll 프로젝트를 만들어야 합니다. 여기에서 기본적으로 사용할 수 있습니다. 예를 들어:testdll이라고 명명됩니다.dll 파일과 인터페이스 파일을 다른 사람에게 보내서 사용해야 하기 때문에 인터페이스 파일을 만들고 인터페이스 함수를 만들어야 합니다.마지막으로 상대방이 이 인터페이스 파일과 dll만 얻으면 실행 파일의 함수를 호출할 수 있습니다.이 인터페이스 파일의 이름을 interface로 지정하고 다음과 같이 코드를 추가합니다.
그런 다음 인터페이스 파일을 구현해야 합니다. 그러면 프로젝트에 클래스가 추가됩니다. 이름: InterfaceImpl로 가정하고 코드의 예는 다음과 같습니다.
#ifdef EXPORT 
#define  EXPORT_DLL  extern "C" __declspec(dllexport)
#else
#define EXPORT_DLL extern "C" __declspec(dllimport)
#endif

class Interface
{
public:
    //      ,           ,                  ,              
    virtual  ~Interface()
    {

    }
    virtual void  Create(CWnd * hParent)=0;
    virtual void  Show(bool ) =0;
};

//           
DllExport Interface * CreateDll();
DllExport int ReleaseITIC(Interface *itic );
#pragma once

#define DllExport
//         
#include "../../include/ITIC.h" 
class CInterfaceImpl : public CStatic,public Interface
{
    DECLARE_DYNAMIC(CInterfaceImpl)

    public:
    CInterfaceImpl();
    virtual ~CInterfaceImpl();
//               
    public:

};
DllExport Interface* CreateDll()
{
    return new CInterfaceImpl;
}
DllExport int ReleaseInterface(Interface *itic )
{
    delete itic;
    return 1;
}

그리고 파일을 컴파일하여 dll을 생성할 수 있습니다.
새 프로젝트에 대한 이름은:testdemo입니다. 이 dll이 정상적인지 테스트하기 위해 대화상자 기반 프로젝트를 새로 만듭니다. 그 안에 dll을 불러오고 헤더 파일을 추가합니다.
#include "../../include/Interface.h" 

그리고 이 컨트롤 dll에 대한 호출을 완성할 수 있습니다. 제 호출 효과는 다음과 같습니다.
이 중 일부는 여전히 매우 번거롭지만, 나도 마침내 이 과정을 알게 되었으니, 여러분의 큰 신의 도움에 감사해야 합니다.
   

좋은 웹페이지 즐겨찾기