网站首页 > 文章精选 正文
最近在做Qt-vs项目时遇到这个问题,最初以为是比较经典的库引用问题,在反复的查找工程配置信息时,并没有发现什么特别的问题。在网上找了半天,也没有发现特别对症的方法,所以总结一下这个工程奇怪的现象。
环境:VS2017、Qt5.12.4、QtVSTool2.4.2
问题现象:
第一次编译,出现问题,如果第二次不选择重新生成,而是选择生成,则系统可以正确编译。当再次选择重新生成时,重复出现如下问题。
1>MusicTimer.vcxproj -> E:\Work\MusicTimer\x64\Debug\MusicTimer.exe
1>LINK : error LNK2001: 无法解析的外部符号 WinMainCRTStartup
1>E:\Work\MusicTimer\x64\Debug\\MusicTimer.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>已完成生成项目“MusicTimer.vcxproj”的操作 - 失败。
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========
问题总结为:编译器找不到入口函数,工程编译失败。
最开始以为是Qt的插件问题,因为该版本的Qt VS Tool 生成的工程是这种类型的,对这块分析的比较少
在预处理定义的时候,使用的是“$(Qt_DEFINES_);%(PreprocessorDefinitions)”这个东西,并不是以前熟悉的“UNICODE _UNICODE WIN32 _ENABLE_EXTENDED_ALIGNED_STORAGE WIN64”这种定义。
所以问题不是太好找。
后来就使用了最笨的一种方法:逐步排除(将工程里的源文件,逐步移除掉)。
首先,新建一个简单的Qt程序,发现改程序可以正常的编译执行。说明编译环境和操作系统环境变量没有问题。
然后,将工程里的其他源文件全部移除,只剩下Qt的main.cpp(如开头的问题现象图片)。
发现编译仍然出现问题。于是,继续移除问文件,将MusicTimer.rc资源文件移除。重新编译
问题没有了。反复重新生成,都没有问题。但是新的问题是,软件还需要图标(生成的EXE没有自定义图标),没有rc文件怎么行。直接使用Qt的setWindowIcon()还实现不了这个功能。
资源文件内容如下,很简单的内容。
经过反复的添加和移除MusicTimer.rc文件,问题和上述一样。
在反复调试,运行过程中发现一个新的错误问题
目前猜测和这个有很大关系,但还不敢确定。后续再找时间继续查找解决方法。
- 上一篇: 海康Visionmaster开发笔记3-Qt二次开发环境配置方法
- 下一篇: 「精华」掌握Qt调试技术
猜你喜欢
- 2025-01-14 Qt界面——搭配QCustomPlot
- 2025-01-14 Qt支持RKMPP硬解的视频监控系统/录像存储和回放/云台控制
- 2025-01-14 东营交警实名曝光一批酒驾人员名单 88人受处罚
- 2025-01-14 Java的优势:跨平台只是一部分
- 2025-01-14 VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
- 2025-01-14 Qt添加MSVC构建套件的方法
- 2025-01-14 Qt开发-基本工具的使用
- 2025-01-14 新型结构四旋翼无人机视觉导航中,半物理仿真平台是怎样设计的?
- 2025-01-14 qt for webassembly环境搭建图文教程
- 2025-01-14 Qt .pro和.qrc创建及介绍
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)