【问题标题】:Qt: linking errorsQt:链接错误
【发布时间】:2013-06-03 20:37:56
【问题描述】:

我是 Qt 新手,在链接我的项目时收到以下错误:

qtmain.lib(qtmain_win.obj):错误 LNK2038:检测到“_MSC_VER”不匹配:va lue '1600' 与 main.obj 中的值 '1700' 不匹配 main.obj:错误 LNK2001:无法解析的外部符号“char const * __cdecl std:: _Winerror_map(int)" (?_Winerror_map@std@@YAPBDH@Z) main.obj:错误 LNK2001:无法解析的外部符号“char const * __cdecl std:: _Syserror_map(int)" (?_Syserror_map@std@@YAPBDH@Z) main.obj:错误 LNK2001:未解析的外部符号“void __cdecl std::_Xbad_al loc(void)" (?_Xbad_alloc@std@@YAXXZ) main.obj:错误 LNK2001:未解析的外部符号“void __cdecl std::_Xout_of _range(char const *)" (?_Xout_of_range@std@@YAXPBD@Z) main.obj:错误 LNK2001:未解析的外部符号“void __cdecl std::_Xlength _error(char const *)" (?_Xlength_error@std@@YAXPBD@Z) main.obj:错误 LNK2001:无法解析的外部符号“__declspec(dllimport) publ ic: 静态 void __fastcall QListData::dispose(struct QListData::Data *)" (__imp_ ?dispose@QListData@@SIXPAUData@1@@Z) main.obj:错误 LNK2001:无法解析的外部符号“__declspec(dllimport) publ ic: static int __fastcall QApplication::exec(void)" (__imp_?exec@QApplication@@S IHXZ) moc_mainwindow.obj:错误 LNK2001:未解析的外部符号“__declspec(dllim 端口) void __fastcall qt_assert(char const *,char const *,int)" (__imp_?qt_asser t@@YIXPBD0H@Z) mainwindow.obj:错误 LNK2001:无法解析的外部符号“__declspec(dllimport ) public: 静态类 QString __fastcall QCoreApplication::translate(char const *,char const *,char const *,int)" (__imp_?translate@QCoreApplication@@SI?AVQStr ing@@PBD00H@Z) mainwindow.obj:错误 LNK2001:无法解析的外部符号“__declspec(dllimport ) public: static void __fastcall QMetaObject::connectSlotsByName(class QObject * )" (__imp_?connectSlotsByName@QMetaObject@@SIXPAVQObject@@@Z) d:\c\output\main\main32.exe : 致命错误 LNK1120: 10 unresolved externals

这是我的链接命令:

"%VCInstallDir%\bin\link.exe" /MACHINE:X86 /LIBPATH:"%VCInstallDir%\lib" /LIBPATH:"%VCInstallDir%\atlmfc\lib" /LIBPATH:"%WindowsSdkDir%\Lib\win8\um \%_pf%" LIBPATH:"e:\Qt\Qt5.0.2\5.0.2\msvc2010\lib" /MERGE:code=.text /errorReport:none /DEBUG /FIXED /INCREMENTAL:NO /NXCOMPAT /LTCG /MAP :"d:\c\temp\main\win32\main.map" MAPINFO:EXPORTS /NODEFAULTLIB /NOLOGO /OPT:REF /OPT:ICF /LARGEADDRESSAWARE:NO /DYNAMICBASE:NO /OUT:"d:\c\output \main\main32.exe" /MANIFESTUAC:NO /SAFESEH:NO /SUBSYSTEM:WINDOWS /VERSION:1.0 /WX /MERGE:.rdata=.text /FIXED:NO libcmt.lib kernel32.lib user32.lib advapi32.lib shlwapi .lib shell32.lib secur32.lib psapi.lib ole32.lib gdi32.lib comctl32.lib ws2_32.lib crypt32.lib wininet.lib msxml2.liboleaut32.lib netapi32.lib userenv.lib comdlg32.lib mpr.lib uuid.lib Qt5Core .libQt5Gui.lib Qt5Widgets.lib qtmain.lib libEGL.lib libGLESv2.lib "d:\c\temp\main\win32\main.obj" "d:\c\temp\main\win32\moc_mainwindow.obj" "d :\c\temp\main\win32\ui_mainwindow.obj" "d:\c\temp\main\win32\mainwindo w.obj"

是否缺少一些库或其他依赖项?谢谢。

【问题讨论】:

  • 你在混合编译器版本吗?您必须为您的确切编译器版本使用 Qt 构建,否则您可能并且将会遇到问题..
  • 我正在使用带有 Qt 5.0.2 x32 VS2010 版本的 VS2012 链接器,因为我没有找到 VS2012 的 x32 版本。

标签: visual-studio-2010 qt static-linking


【解决方案1】:

您不能使用用其他版本的 VS 构建的 Qt 库。使用您的编译器编译 Qt。

【讨论】:

  • 好的,我已经用 VS2012 从源代码编译了 Qt(带有 /MT 参数),但是链接器错误仍然存​​在。如何解决?
  • 如果链接器错误仍然存​​在,那么您没有使用您编译的库,但仍然以某种方式使用您从二进制包安装的不兼容库。删除这些并修复您的库路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多