过去几天我一直在关注这个问题但没有成功。我一直在尝试用Qt创建一个图形应用程序。看起来我的LNK2019应该来自未实现的构造函数:
main.obj:-1: error: LNK2019: unresolved external symbol "public: __cdecl ArbObject::ArbObject(class Table *,int *,int,int,int,int,int)" (??
0ArbObject@@QEAA@PEAVTable@@PEAHHHHHH@Z) referenced in function "class std::vector<class ArbObject *,class std::allocator<class ArbObject *> > __cdecl
createArbObjects(class QList<class QStringList> &,class Table *,int &)" (?createArbObjects@@YA?AV?$vector@PEAVArbObject@@V?$allocator@PEAVArbObject@@@std@@@std@@AEAV?
$QList@VQStringList@@@@PEAVTable@@AEAH@Z)
但是,构造函数在那里并在适当的.cpp文件中实现。
.h file has this:
ArbObject(Table* tr, int* rgb, int t, int xpos, int ypos, int w, int h);
.cpp file has this:
ArbObject::ArbObject(Table* tr, int* rgb, int t, int xpos, int ypos, int w, int h)
: QWidget((QWidget*)tr), obj_typ(t), xpos(xpos), ypos(ypos),wid(w), hei(h)
{
...
}
我已经包含了我能想到的一切。这在我的Windows机器上不起作用,但它在我的Mac上运行得非常好。我的问题是什么样的依赖可能导致这种问题?我可以探索哪些其他方法来解决我的问题?
编辑:已修复
看到答案!
答案 0 :(得分:-1)
事实证明,实际上我构建了确定编译器错误的代码的方式。我不确切知道为什么,但确实如此,但这可能是由于我构建代码的方式。
以前,我在main.cpp文件中包含了一个带有相关创建函数的parser.h文件。我的理由是parser.h文件将包含在main.cpp文件的顶部。 parser.h本质上是一个让长期函数远离视线的地方。
现在,我为解析/创建创建了一个单独的类,它具有创建arbobjects,ball等的方法。主函数创建解析器的实例并使用这些方法。这使得它在没有链接器错误的情况下进行编译