由于动态链接库中的虚函数而导致编译错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于动态链接库中的虚函数而导致编译错误相关的知识,希望对你有一定的参考价值。

在MSVC dll项目中,我试图创建一个包含基类的dll

//header file
class MATHLIBRARY_API Shape 
protected:
    int width, height;
public:
    Shape(int, int);
    int area(void)  return -1; ;
;

已成功编译,但是在向函数添加虚拟说明符时

class MATHLIBRARY_API Shape 
protected:
     int width, height;
public:
     Shape(int, int);
     virtual int area(void)  return -1; ;
;

编译器显示错误消息

Error   LNK2019 unresolved external symbol `__declspec(dllimport) const Shape::`vftable'" (__imp_??_7Shape@@6B@) referenced in function "public: __thiscall Shape::Shape(int,int)" (??0Shape@@QAE@HH@Z) Dll3    c:\Users\langj\source\repos\Dll3\Dll3\Dll3.obj  1   

哪里可能出问题了?

答案

未定义哪个库关键字。能否请您解释根本原因

以上是关于由于动态链接库中的虚函数而导致编译错误的主要内容,如果未能解决你的问题,请参考以下文章

C++:动态共享库中的虚函数产生段错误

动态链接库

如何释放动态链接库中申请的内存

linux上动态链接期间符号的替代实现

怎么把自己写的函数编译到动态库中

Linux的静态函数库和动态函数库