创建新插槽时未解析的外部符号

Unresolved external symbol when create new slot

提问人:Nikita 提问时间:12/29/2020 最后编辑:eyllanescNikita 更新时间:12/29/2020 访问量:287

问:

尝试在具有标准C++库参数的任何窗口类中创建新插槽时,出现“LNK2019:未解析的外部符号”错误。

private slots:
    ...

    void setNewTableItemFromDialog(int number, int age, string rate, string name, string team);

    ...
private slots:
    void replaceTableItem(int number, int age, string rate, string name, string team);

由于某种原因,Qt可以编译“setNewTableItemFromDialog()”方法,但不能使用“replaceTableItem()”方法执行此操作,whicn实际上包含相同的参数。如果我删除这个特定方法,一切都很好。我已经尝试删除构建 derectory、运行 CMake 和清理项目,但没有任何效果。

Here is full error description screenshot

qt qt-creator linker-errors lnk2019

评论

1赞 Matt Eding 12/29/2020
您是否在实现文件中提供了 replaceTableItem 的定义?
0赞 Nikita 12/29/2020
@MattEding 哦,就是这样!谢谢。为什么我可以在没有定义的情况下使用 QString 参数编译文件,但不能使用此类型?
0赞 Matt Eding 12/29/2020
你不应该在没有定义的情况下编译插槽——也许你把它与那些定义由Qt的MOC创建的信号混淆了。顺便说一句,在使用Qt时,您可能应该坚持使用QString,但是如果您必须使用非Qt类型,则需要注册它们。qRegisterMetaType

答: 暂无答案