MFC DLL导出类

方法1:
   在VC上new一个名为dll的MFC DLL工程。

     第一步,创建一个interface.h文件来定义接口,代码如下:

    //file interface.h

    #ifndef _INTERFACE_H_

   #define _INTERFACE_H_

    interface ITest

    {

        virtual int Print()=0;

        virtual ~ITest(){};

    };

    ITest* DllCreateTest();

    void DllDestroyTest(ITest *pTest);

   #endif

   第二步,定义一个继承自接口interface的类CTest,代码如下:

   //file test.h

    #ifndef _TEST_H_

   #define _TEST_H_

   #include "interface.h"

   class CTest : public ITest

   {

   public:

      CTest();

      virtual ~CTest();

      int Print();

   }

   #endif

   //file test.cpp

   #include "StdAfx.h"     //注意这里需要包含这个头文件,否则会报fatal error C1010: unexpected end of file while

                                         // looking for precompiled header directive

   #include "test.h"

    CTest::CTest()

   {

   }

   CTest::~CTest()

   {

   }

   int CTest::Print()

   {

      printf("ok!/n");

      return 0;

   }

   第三步,在dll.cpp文件里,实现DllCreateTest和DllDestroyTest两个函数,代码如下:

   //file dll.cpp

   ......

   ITest* DllCreateTest()

  {

      return new CTest();

   }

   void DllDestroyTest(ITest *pTest)

   {

      if(pTest != NULL) delete pTest;

      pTest = NULL;

   }

   第四步,也是最容易忽略的一步,等以上操作都完成之后,还要在dll.def文件里,把要导出的函数DllCreateTest和DllDestroyTest加进去,如下:

; dll.def : Declares the module parameters for the DLL.

LIBRARY      "dll"
DESCRIPTION  'dll Windows Dynamic Link Library'

EXPORTS
    ; Explicit exports can go here
 DllCreateTest
 DllDestroyTest

  至此,MFC DLL的工程已经完成。那么如何在其他工程中调用生成的dll呢

 DllCreateTest取得一个全局变量g_Test,之后用g_Test去调用各个虚函数.

ITest不一定非得为纯虚函数!

原文地址:https://www.cnblogs.com/hgy413/p/3693635.html