如何从exe应用程序中调用dll中的纯虚函数?

时间:2012-06-07 16:52:33

标签: visual-c++

我有一个dll,它有一个抽象类,其所有成员函数都是纯虚函数。我正在尝试编写一个应用程序来调用这些函数。调用这些纯虚函数需要采取哪些步骤?

这只是一个原型

带抽象类的头文件:interface.h [这些是导出的函数]

class MathFuncExport {

public:

    virtual int Add(int a, int b)=0;

    MathFuncExport(){};
    virtual ~MathFuncExport(){};
};

dll中的头文件:MathFuncDll.h

#include "intf.h"

class MyMathFuncs : public MathFuncExport
{
public:
    MyMathFuncs(){};
    virtual ~MyMathFuncs(){};
    virtual int Add(int a, int b);
};

实施:MyMathFunsDll.Cpp文件

#include "MathFuncDll.h"

int MyMathFuncs::Add(int a, int b)
{
    return a + b;
}

这创建了一个dll,但是我无法在抽象类中调用这些函数,或者我在这里缺少一些链接。请帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:0)

你不能称之为纯虚拟。实现它们是为了强制实现功能。 由于您的基类在DLL中,因此您必须导出类才能使用它来派生其他类。

导出类的最简单方法是使用隐式链接;这样你需要一个类声明和导入库的标题。对于不同联系check this link的超越。

为一个小小的演示创建Win32 DLL。如果需要,请检查MFC支持并选中导出符号框。

这将创建一个带有样本类和全局变量导出的dll。查看创建特殊宏的头文件,具有不同的DLL(导出)含义和与此dll(导入)的可执行链接。

一旦理解了如何使用隐式链接,就可以从dll中的基类派生类,就像在可执行模块中使用代码一样。