最近做项目用QT遇到一些环境方面问题,这里整理下,后续补充,希望对大家有所帮助。
- error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl AboutDlg::metaObject(void)const " (?metaObject@AboutDlg@@UEBAPEBUQMetaObject@@XZ)
原因是没有生成moc_***.obj文件,有以下几个注意点:
1.继承了QObject类的头文件中都要加入
Q_OBJECT
2.Check下QT相关头文件属性,项类型是否为
Qt Meta-Object Complier(moc),如果不是则不会用moc.exe生成moc_****.obj文件
![](https://i-blog.csdnimg.cn/blog_migrate/08ac8b22d62ec3682413833b66221dad.png)
2.VS中无法QT Project Setting找不到
这种情况下一般是配置文件哪里出了问题,Open QT project file(*.pro) 一般都可以解决。
3.LINK : error LNK2001: 无法解析的外部符号 WinMainCRTStartup”
之前的VS工程运行一直良好,前几天把VS重装了,相关软件也都进行了配置。今天运行出现一个让人揪心问题“LINK : error LNK2001: 无法解析的外部符号 WinMainCRTStartup”,这个问题看似很常见,但是我觉得并不是网上说的那样,因为我确实没有修改过任何配置,我估计是可你的那个是我重装软件导致。
但是我运行其他项目工程又没问题,最后我估计是和我安装了qt-vsaddin 因为我需要在VS中加载QT项目。
对比之前的配置文件*.vcxproj发现Keyword这个关键字段和之前的不同,猜测这个是和Qt版本相关的一个东西,
把这个配置改成和以前的一致
<PropertyGroup Label="Globals">
<ProjectGuid>{66672045-BC8F-341A-A5EA-BB4E3DE5CCDE}</ProjectGuid>
<RootNamespace>Demo</RootNamespace>
<Keyword>
Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
接下来,在QT tools里 Convert project to QT VS tool project
最后在工程属性->链接器->输入加入如下lib
![](https://i-blog.csdnimg.cn/blog_migrate/14c2dd7d13716549dae71867d5bdeda6.png)
debug工程加入:
qtmaind.lib
shell32.lib
Qt5Widgetsd.lib
Qt5Guid.lib
Qt5Networkd.lib
Qt5Cored.lib
Qt5UiToolsd.lib
Release工程加入:
qtmain.lib
shell32.lib
Qt5Widgets.lib
Qt5Gui.lib
Qt5Network.lib
Qt5Core.lib
Qt5UiTools.lib
问题得以解决。