求助,在已有工程中加入另外的QT工程,遇到的问题

lhdbzxsds 2017-09-06 04:28:25
给一个软件开发扩展,写扩展的工程已经配置完成,能够正常输出需要的扩展文件。现在想要将一个Qt工程加入到现有的扩展里,来实现扩展被调用时打开qt做的窗口,该窗口也已独立完成。
我将Qt工程的头文件、C++文件均加入到扩展所在的工程里,并将Qt工程的各种库文件配置,悉数加入到扩展工程里,但是最后编译的时候报错为:


2>mainwindow.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __cdecl MainWindow::metaObject(void)const " (?metaObject@MainWindow@@UEBAPEBUQMetaObject@@XZ)
2>mainwindow.obj : error LNK2001: unresolved external symbol "public: virtual void * __cdecl MainWindow::qt_metacast(char const *)" (?qt_metacast@MainWindow@@UEAAPEAXPEBD@Z)
2>mainwindow.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MainWindow@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) 

查了据说是LINK的lib库没加到位,但是我已多次确认工程属性,并无遗漏。
...全文
389 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhdbzxsds 2017-09-07
  • 打赏
  • 举报
回复
引用 1 楼 Lutx 的回复:
执行qmake后再执行build或rebuild试试. qt中继承于QObject的类(准确的是class中包含宏定义 Q_OBJECT), 这个头文件需要用moc执行自动生成对应的一个cpp文件加到工程里面, 你这个错误所说的函数都是在这个自动生成的moc***.cpp文件中定义的.
还是不行,重新生成了 我怀疑我的思路一开始就不对,QtCreator生成的是.exe,我把那边的项目代码强行移到我的VS工程里,肯定会有问题,至少.pro文件就错过了 我试试直接在现有的VS工程下制作Qt界面吧
Lutx 2017-09-07
  • 打赏
  • 举报
回复
执行qmake后再执行build或rebuild试试. qt中继承于QObject的类(准确的是class中包含宏定义 Q_OBJECT), 这个头文件需要用moc执行自动生成对应的一个cpp文件加到工程里面, 你这个错误所说的函数都是在这个自动生成的moc***.cpp文件中定义的.
lhdbzxsds 2017-09-07
  • 打赏
  • 举报
回复
解决了,手动moc一下用Qt的头文件,然后把生成的moc_XXX.cpp添加到工程里就可以了

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧