在visual 2010上编译qt项目的链接错误

Posted

技术标签:

【中文标题】在visual 2010上编译qt项目的链接错误【英文标题】:link error compiling qt project on visual 2010 【发布时间】:2011-12-03 18:20:43 【问题描述】:

我尝试用 Visual 2010 编译一个 qt 项目,但是当我重建我的解决方案时出现一些链接错误:

error LNK2001: unresolved external symbol "public: virtual int __thiscall BNetwork::qt_metacall(enum QMetaObject::Call,int,void * *)" on bnetwork.obj
error LNK2001: unresolved external symbol "public: virtual int __thiscall Contact::qt_metacall(enum QMetaObject::Call,int,void * *)" on contact.obj
error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall BNetwork::metaObject(void)const " on bnetwork.obj  
error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Contact::metaObject(void)const " on contact.obj
error LNK2001: unresolved external symbol "public: virtual void * __thiscall BNetwork::qt_metacast(char const *)" on bnetwork.obj
error LNK2001: unresolved external symbol "public: virtual void * __thiscall Contact::qt_metacast(char const *)" on contact.obj

经过一些“谷歌搜索”后,我没有找到关于这个问题的解决方案,所以 我把我所有的 Qt 库放在我项目的附加依赖项上的 c:/QT/4.7.4/lib/ 上,但我总是有这些错误......

我确定 Qt 是在视觉上构建和安装的,因为当我编译以下代码(这是一个示例,不是我的项目)时,它可以正常工作:

#include <QtGui/qapplication.h>
#include <QtGui/qpushButton.h>

int main(int argc, char *argv[])

    QApplication app(argc, argv);

    QPushButton bouton("Bonjour les Zéros !");
    bouton.show();

    QObject::connect(&bouton, SIGNAL(clicked()), &app, SLOT(quit()));

    return app.exec();

我没有这些错误,所以我认为这是我的项目特有的,但我没有找到解决方案

谁能帮帮我?

【问题讨论】:

是的,我用 nmake (= 4h) 构建 qt 并在视觉上安装 Qt 插件。我编辑我的帖子 问题解决了!我在moc -I"%QTDIR%\include" -I"%QTDIR%\include\QtCore" -I"%QTDIR%\include\QtGui" -omoc_contact.cpp contact.h 上做同样的事情bnetwork.h。在此之后,我在我的项目中添加了新的 .cpp 文件,它可以工作了! 很高兴听到这个消息。发布并接受您的答案:) 我不能,我没有声望等级。请问可以发个微信吗? @Yumino 你不应该真的手动做,看看qmake。 【参考方案1】:

问题解决了!我做 moc -I"%QTDIR%\include" -I"%QTDIR%\include\QtCore" -I"%QTDIR%\include\QtGui" -omoc_contact.cpp contact.h 和 bnetwork.h 上的相同。在此之后我添加新的 .cpp 我的项目上的文件,它的工作原理!感谢@Yumino :)

【讨论】:

以上是关于在visual 2010上编译qt项目的链接错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2017 社区版上编译时出现错误 Qt 5.8

在visual studio 2010上编译一个项目时系统报错,提示了问题补充的错误信息。 这样的问题怎么解决?

在 Visual Studio 2017 社区版上编译 Qt 5.8 时出现错误 C3615

OpenCV 程序无法在 Visual Studio 2010 上编译

如何在 Qt5 上编译 QtWebKit?

使用 Boost 在 Visual Studio10 上编译和使用 JSONCPP