【问题标题】:unresolved external symbol with qt 5.5.1 and visual studio 2010qt 5.5.1 和 Visual Studio 2010 无法解析的外部符号
【发布时间】:2026-01-26 07:40:01
【问题描述】:

问候

我已使用QT 4.8.5Visual Studio 2008 提出申请。出于某种原因,我需要将我的QT 更新为5.5.1,并将我的Visual Studio 更新为2010。我下载了qt-everywhere-opensource-src-5.5.1 并为Visual Studio 2010 构建。

configure -debug-and-release -opensource -platform win32-msvc2010 -icu -openssl -nomake examples -prefix C:\QT-Compile
nmake
nmake install

当我构建解决方案时,出现以下错误:

Error   1   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_ttu_manager.obj
Error   2   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_vdm_manager.obj
Error   3   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_wosa_event_listener.obj
Error   4   error LNK2019: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ) referenced in function "public: virtual struct QMetaObject const * __thiscall RPTRManager::metaObject(void)const " (?metaObject@RPTRManager@@UBEPBUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_rptr_manager.obj
Error   5   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_jptr_manager.obj
Error   6   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_sptr_manager.obj
Error   7   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_siu_manager.obj
Error   8   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_cim_manager.obj
Error   9   error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_dep_manager.obj
Error   10  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_idc_manager.obj
Error   11  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_pin_manager.obj
Error   12  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_device_manager.obj
Error   13  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_bcr_manager.obj
Error   14  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_cam_manager.obj
Error   15  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_cdm_manager.obj
Error   16  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_controller.obj
Error   17  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_user_interface.obj
Error   18  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_ssl_connection_manager.obj
Error   19  error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct QMetaObject * __thiscall QObjectData::dynamicMetaObject(void)const " (__imp_?dynamicMetaObject@QObjectData@@QBEPAUQMetaObject@@XZ)  C:\Hashemi\Build\New_ATM\moc_fit_manager.obj
Error   20  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_vdm_manager.obj
Error   21  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_wosa_event_listener.obj
Error   22  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_jptr_manager.obj
Error   23  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_sptr_manager.obj
Error   24  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_siu_manager.obj
Error   25  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_ttu_manager.obj
Error   26  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_dep_manager.obj
Error   27  error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z) referenced in function __ehhandler$?startListenSignal@IDCManager@@QAEXVQString@@@Z C:\Hashemi\Build\New_ATM\moc_idc_manager.obj
Error   28  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_pin_manager.obj
Error   29  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_rptr_manager.obj
Error   30  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_bcr_manager.obj
Error   31  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_cam_manager.obj
Error   32  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_cdm_manager.obj
Error   33  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_cim_manager.obj
Error   34  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_controller.obj
Error   35  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_user_interface.obj
Error   36  error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QObject::qt_metacast(char const *)" (__imp_?qt_metacast@QObject@@UAEPAXPBD@Z)    C:\Hashemi\Build\New_ATM\moc_fit_manager.obj

其实还有很多,我只是提一些而已。

我知道unresolved external symbol 错误是关于链接器找不到库,但是当我在Linker->General->Additional Library Directories 中检查时,所有 lib 目录都已导入。

我在这里错过了什么!!!

提前致谢!!!

【问题讨论】:

  • 我也遇到了这个问题,发现我正在运行 cmake 来创建 x64 构建,同时指向 x86 Qt5 dll。

标签: visual-studio-2010 qt cmake qt5.5


【解决方案1】:

我发现了问题。

QT5 之前,我在CMakeLists.txt 中使用以下行。

FIND_PACKAGE(Qt5 REQUIRED)  
...
TARGET_LINK_LIBRARIES(project-name
${QT_LIBRARIES}
...)

对于QT5,我需要将它们更改为以下形式。

find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Sql WebKit Widgets Multimedia) 
...
TARGET_LINK_LIBRARIES(project-name
    Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Network Qt5::Sql Qt5::WebKit Qt5::Multimedia 
...)

【讨论】:

    最近更新 更多