所以,我有两个项目,项目2建立一个DLL我哪里有这个类(头和CPP后续)与CPP文件琐碎的定义导致链接错误
头虚函数
class classWvirts
{
public:
classWvirts(){};
~classWvirts(){};
virtual int testVirtualFunction();
};
CPP
#include "classWvirts.h"
int classWvirts::testVirtualFunction()
{
return 1;
}
在项目1项(它建立到一个exe),我只是有一个.cpp文件看起来像这样:
#include "../testApp2/classWvirts.h"
classWvirts obj1;
int main()
{
obj1.testVirtualFunction();
}
这种设置似乎有所有成分,它的工作,我的方法,但它被标记为虚拟的,在其CPP文件中一个微不足道的定义。
然而,当我尝试编译,我得到一个LNK2001链接错误,看起来像
错误1错误LNK2019:无法解析的外部符号 “市民:虚拟INT __thiscall classWvirts :: testVirtualFunction(无效)”(? testVirtualFunction @ classWvirts @@ UAEHXZ)在函数_main中引用E:\ Work \ Scratch \ US1212_Virt \ testApp \ testApp \ Source.obj testApp
有人能指出我做错了什么吗?我意识到,如果我把简单的定义放在头文件里,一切都会奏效,但如果这不是一个选项呢? (这显然是我在一个大型项目中遇到的问题的简化版本),将cpp编入一个inl并将其包含在标题中可能有空间,但我宁愿避免这种情况并保持cpp和header的区别。
与DLL导入库的链接。也将该类声明为dll-export。我不记得确切的语法,它是特定于Microsoft的。 – 2014-10-09 03:07:06
是的,刚刚达到了这个结论:)感谢加强相同。 – angryInsomniac 2014-10-09 03:08:24