gpt4 book ai didi

c++ - Qt metaObject 链接器问题

转载 作者:IT老高 更新时间:2023-10-28 22:08:06 26 4
gpt4 key购买 nike

在将 Qt 与 Vs 集成并尝试编译 .pro 文件后,我收到以下错误:

Error   9   error LNK2001: unresolved external symbol "public: virtual int __thiscall Multiplication_dialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Multiplication_dialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z)     

Error 7 error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Multiplication_dialog::metaObject(void)const " (?metaObject@Multiplication_dialog@@UBEPBUQMetaObject@@XZ)


Error 8 error LNK2001: unresolved external symbol "public: virtual void * __thiscall Multiplication_dialog::qt_metacast(char const *)" (?qt_metacast@Multiplication_dialog@@UAEPAXPBD@Z)

怎么办?

最佳答案

当你的项目中没有编译/链接 foo.h 的 moc_foo.cpp(它包含你的标有 Q_OBJECT 的类)时,你通常会遇到这些错误。

要让 Qt 项目在 VS 中运行,您也可以

  1. 使用 'qmake -tp vc' 或创建一个 .vcproj 文件
  2. 使用 Qt Visual Studio 插件,它会自动为您处理所有 moc 魔法(但不适用于 VC Express 版本)。

使用插件时,您可以通过以下方式触发 moc_foo.cpp 的创建

  • 确保相关对象的头文件出现在 VS 项目中
  • 列表项
  • 从 Multiplication_dialog 的头文件中删除所有出现的 Q_OBJECT。
  • 保存文件
  • 再次添加 Q_OBJECT
  • 保存文件

现在您应该在解决方案资源管理器的“生成的文件”文件夹中有两个版本的 moc_multiplication_dialog.cpp。一个用于“调试”,一个用于“发布”。确保这些文件之一从构建中排除。

关于c++ - Qt metaObject 链接器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com