0

我有一个 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,但我无法调用抽象类中的函数,或者我在这里缺少一些链接。请帮我解决这个问题。

谢谢

4

1 回答 1

0

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

导出类最简单的方法是使用隐式链接;这样,您需要一个用于类声明和导入库的标头。对于不同链接的overllok,请检查此链接

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

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

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

于 2012-06-07T22:08:10.230 回答