在另一个项目中找不到虚拟函数的定义

时间:2016-10-21 15:46:32

标签: c++ visual-studio inheritance dll virtual

项目由以下类组成(省略了其他功能):

// MyClass.h
class MyClass {
    public:
        virtual void print();
};

// MyClass.cpp 
#include "stdafx.h"
#include "MyClass.h"
void MyClass::print() {
    // empty
}

在另一个项目中,一个类派生自MyClassprint功能不会被覆盖。在编译之后的链接步骤中,无法找到函数print的定义("未解析的外部符号"错误)。我该如何解决这个问题?项目中引用了MyClass.hMyClass.cpp的项目。

编辑:开发环境是Win10 x64上的VS 2015。如果我删除关键字virtual或将MyClass.h和MyClass.cpp移动到另一个项目,则错误不再发生。

编辑2:两个项目都是动态库(DLL)。

1 个答案:

答案 0 :(得分:0)

包含MyClass.cpp的项目在构建时将生成.lib文件。必须将该库文件添加到另一个项目中,以便可以将其链接到,告诉项目它可以在其他DLL中找到该代码。