C++Qt | 无法打开源文件:“x64\Debug\moc_xxx.cpp”怎么办。

简介: 编译时报错: 1>c1xx : fatal error C1083: 无法打开源文件:“x64\Debug\Res\src\Vlc\include\moc_AVPlayer.cpp”: No such file or directory的解决办法。

最近遇到一个问题,希望可以有大佬可以探讨一下。

环境:VS2017+Qt5.14.2; 工具->扩展和更新->Qt Visual Studio Tools->版本:2.5.1

项目中添加了一个纯C++类的.h和.cpp,为了可以在这个类中使用Qt的信号槽机制,将.h中的纯C++类继承QWidget,并且在类中添加Q_OBJECT。

曾经使用的Qt Visual Studio Tools版本是2.7.1,编译运行是没有问题的,后改成版本2.5.1后出现以下错误:

编译时报错: 1>c1xx : fatal error C1083: 无法打开源文件:“x64\Debug\Res\src\Vlc\include\moc_AVPlayer.cpp”: No such file or directory。

moc_AVPlayer.cpp文件是在程序编译过程中动态生成的,经过查找发现moc_AVPlayer.cpp文件是成功生成了的,但是生成的路径是x64\Res\src\Vlc\include,生成路径和报错路径不一致,

正常情况下,moc_.cpp文件应该生成在x64\Debug\moc或x64\Release\moc目录下,不知道为什么这个文件的生成路径和其他文件的生成路径不一致,并且生成成功后,编译找的路径不对。

解决办法: 将生成的moc_.cpp放到指定目录下,再编译就成功了。但是这个方法没办法从根上解决这个问题,一旦这个文件发生变化的时候,还需要再手动将moc_.cpp放到指定目录下。

之前遇到过类似情况,解决办法是:在VS中选中该文件的.h,右键打开属性,将常规中的项类型改为其他编译正常的文件的项类型,就可以了。但是这个文件的属性中的项类型,以及项类型的详细信息的设置都和其他文件一模一样,尝试过1.将文件改名重新加入;2.重新设置文件属性;3重新添加文件后编译都不行。感觉是工具集版本不一致造成的,但是具体原因和解决办法还是没有找到。

总结:如果没有成功生成moc_xxx.cpp文件,应该在VS中选中该文件的.h,右键打开属性,将常规中的项类型改为其他编译正常的文件的项类型。 如果成功生成了moc_xxx.cpp文件,只是编译路径与生成路径不符,应该手动将生成的moc_.cpp放到指定目录下。

如果有更好的解决办法,希望可以在评论区聊一下!

目录
相关文章
|
6月前
|
开发框架 Linux C语言
C、C++、boost、Qt在嵌入式系统开发中的使用
C、C++、boost、Qt在嵌入式系统开发中的使用
211 1
|
6月前
|
安全 网络协议 数据安全/隐私保护
掌握Qt和C++:构建你的第一个P2P应用程序
掌握Qt和C++:构建你的第一个P2P应用程序
247 3
|
6月前
|
编译器 API C语言
深入探究Qt与C++标准的兼容之旅
深入探究Qt与C++标准的兼容之旅
597 3
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
180 1
Qt(C++)开发一款图片防盗用水印制作小工具
WK
|
8天前
|
开发框架 开发工具 C++
C++跨平台框架Qt
Qt是一个功能强大的C++跨平台应用程序开发框架,支持Windows、macOS、Linux、Android和iOS等操作系统。它提供了250多个C++类,涵盖GUI设计、数据库操作、网络编程等功能。Qt的核心特点是跨平台性、丰富的类库、信号与槽机制,以及良好的文档和社区支持。Qt Creator是其官方IDE,提供了一整套开发工具,方便创建、编译、调试和运行应用程序。Qt适用于桌面、嵌入式和移动应用开发。
WK
29 5
|
3月前
|
存储 C++
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
|
3月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
142 2
|
3月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
|
3月前
|
安全 C++
C++ QT 单例模式
C++ QT 单例模式
49 0
|
4月前
|
数据可视化 开发者 C++
Qt(C++)使用QChart静态显示3个设备的温度变化曲线
QChart模块是Qt Charts库的基础,提供了用于创建和显示各种类型图表的类和接口。Qt Charts库是一个功能丰富、易于使用的数据可视化工具库,可以帮助开发者在应用程序中添加漂亮而又交互性强的图表。
70 1
Qt(C++)使用QChart静态显示3个设备的温度变化曲线