0

在过去的几天里,我一直在看这个,但没有成功。我一直在尝试用 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 上运行良好。我的问题是,什么样的依赖会导致这种问题?我可以探索哪些其他途径来解决我的问题?

  • 它是基于编译器的吗?MSVC 与 Clang
  • 是否在链接过程中都包含不同的文件,因此它可能无法在一个平台上运行,而不是在另一个平台上运行。

编辑:固定

看答案!

4

1 回答 1

-1

事实证明,实际上是我构建代码的方式决定了编译器错误。我不知道确切原因,但确实如此,但这可能是由于我构建代码的方式。

以前,我在 main.cpp 文件中包含了一个带有相关创建函数的 parser.h 文件。我的理由是 parser.h 文件将包含在 main.cpp 文件的顶部。parser.h 本质上是一个让长函数看不见的地方。

现在,我为解析/创建创建了一个单独的类,它具有创建 arbobjects、balls 等的方法。主函数创建解析器的一个实例并使用这些方法。这使它编译时没有链接器错误

于 2013-05-08T23:28:32.387 回答