我有一个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,但是我无法在抽象类中调用这些函数,或者我在这里缺少一些链接。请帮我解决这个问题。
由于
答案 0 :(得分:0)
你不能称之为纯虚拟。实现它们是为了强制实现功能。 由于您的基类在DLL中,因此您必须导出类才能使用它来派生其他类。
导出类的最简单方法是使用隐式链接;这样你需要一个类声明和导入库的标题。对于不同联系check this link的超越。
为一个小小的演示创建Win32 DLL。如果需要,请检查MFC支持并选中导出符号框。
这将创建一个带有样本类和全局变量导出的dll。查看创建特殊宏的头文件,具有不同的DLL(导出)含义和与此dll(导入)的可执行链接。
一旦理解了如何使用隐式链接,就可以从dll中的基类派生类,就像在可执行模块中使用代码一样。