VS |
您所在的位置:网站首页 › vs运行不了cpp › VS |
VS+QT需要获得.ui对应的ui_XXXX.h头文件的解决方法
解决办法: (1)在 Qt5.11.2\5.11.2\mingw53_32\bin 目录下有对应的 uic.exe 用来生成 .ui 对应的 ui_XXXX.h 头文件,所以 cmd 进入 bin 目录,运行uic XXXX.ui ui_XXXX.h就可以生成。 (2)在 VS 下,右键 .ui 文件 -> "编译",就会生成对应的 ui_XXXX.h 头文件,但默认的 ui_XXX.h 输出目录是$(IntDir)\uic\%(RelativeDir),在工程所在的 Debug\uic 目录下,而实际需要修改在自定义的 GeneratedFiles 目录下,右键 .ui 文件 -> "配置属性" -> “uic”,修改输出目录为GeneratedFiles\。 QT -1: error: [debug/qrc_images.cpp] 异常解决运行报错: -1: error: [debug/qrc_images.cpp]解决办法: 右键 .qrc 文件,点击 open in editor 后出现的红色就是误删遗留下来的问题,删掉重新编译即可。 LINK : fatal error LNK1158: 无法运行“rc.exe”问题: 在用 VS2015 编译网上别人的源码时,出现了 LINK : fatal error LNK1158: 无法运行“rc.exe” 的问题。 解决方法: 打开 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64 文件夹(找不到可以用 Everything 搜 "rc.exe"),复制里边的 “rc.exe” 和 "rcdll.dll",拷贝到 VS2015 的 VC 下的 bin 目录下,我的是 E:\technology\VS 2015\VC\bin,重新 build 即成功。 (这个问题应该是最近对 VS 进行过修改,或者环境变量变了,其实将这个路径加到环境变量的 PATH 中去也是可以的) undefined reference to `vtable for’”问题的原因及解决方法原因: Qt 中,类要支持信号与槽机制,需要继承自 QObject 并在头文件开头添加 Q_OBJECT 宏。 如果使用 QtCreator 创建类时,没有选择继承自 QObject 类或其子类,而在创建后手工修改继承自 QObject 并手动添加 Q_OBJECT 宏,则在编译时有可能会出现 ”undefined reference to `vtable for’…….” 错误. **解决方法: ** 把新创建的类从项目中移除(主要不要从磁盘上删除),然后再添加进来,QtCreator就会重新解析此类,再编译就不再会出现上述错误。 Qt Creator提示无法用“UTF-8”编码解码,无法编辑问题: 在 Qt Creator 里打开其他编辑器的代码时,有时会提示无法用 “UTF-8” 编码解码,无法编辑。 解决方法: (1)找到源文件,在文件上右键使用 Notepad++ 编辑器打开,选择 ---> “编码” --->“转为UTF-8编码”。 (2)windows环境下,Qt Creator,菜单 -> 工具 -> 选项 -> 文本编辑器 ->行为 -> 文件编码:默认编码:System(简体中文Windows系统默认指的是GBK编码,即下拉框选项里的GBK/windows-936-2000/CP936/windows-936) error LNK2019: 无法解析的外部符号 __imp__recv@16,该符号在函数 _*** 中被引用出现这个错误,一般都是缺少了相关的库文件,可以右键点击项目,选择属性,选择链接器,选择输入,选择附加依赖项,在依赖项里添加相应的库文件,这里是 ws2_32.lib 文件,然后就可以了。 error: unknown type name 'class' 的解决方法编译工程时出现以下错误: error: unknown type name 'class'原因: C 文件 include 了带有 C++ 关键字的头文件,如 class 等。因此,包含 C++ 关键字的头文件被 C 编译器所编译,而不是用 C++ 编译器编译,而 C 编译器无法识别 C++ 的关键字,所以报错。 解决方法: 1、不能在 C 文件中包含 C++ 的头文件,所以需要将 .c 改成 .cpp。 2、在所有使用 C++ 方法的地方加上:#ifdef __cplusplus,如: #ifdef __cplusplus class A{ }; #endi注:如果使用了 extern "C" ,也要加上 #ifdef __cplusplus,因为 C 编译器无法识别 extern "C"。 fatal error C1083: 无法打开包括文件:“unistd.h”: No such file or directory许多在 Linux 下开发的 C 程序都需要头文件 unistd.h,但 VC 中没有个头文件,所以用 VC 编译总是报错。把下面的内容保存为 unistd.h,可以解决这个问题。 #ifndef _UNISTD_H #define _UNISTD_H #include #include #endif /* _UNISTD_H */ fatal error LNK1281: 无法生成 SAFESEH 映像解决方法: 1.打开该项目的“属性页”对话框。 2.单击“链接器”文件夹。 3.单击“命令行”属性页。 4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。 找不到Qt5Cored.dllQt5Cored.dll 和 Qt5Core.dll 文件分别用于 Qt 软件的 Debug 版和 Release 版。 通常会有两个 Qt5Core.dll 文件,分别位于 Qt 安装目录下的 “Qt5.11.2\5.11.2\mingw48_32\bin” 和 “\Qt5.11.2\Tools\QtCreator\bin” 两个目录中。其中 “Qt5.11.2\5.11.2\mingw48_32\bin” 目录下才是 Qt 项目运行时所需的库。 但是,有时候在运行 Release 版项目时,却提示没有找到 Qt5Cored.dll。这是由于在编译 Release 版时,错误的链接到了 Debug 版的库上。这种情况主要发生在使用了第三方软件库的时候,在编译第三方软件库时,Debug 版本库链接到 Qt 的 Qt5Cored.dll,而 Release 版链接到 Qt5Core.dll,如果在编译 Release 版项目时错误的链接了第三方软件库的 Debug 版,则也会间接的链接 Debug 版的相关支持库(如 Qt5Cored.dll),因此在运行项目时提示需要相关的 Debug 版支持库。 举个例子:在编译 Release 版项目时,工程文件中有 “#LIBS += D:/Qwt-6.1.0/lib/qwtd.dll”(这是 QWT 库,QWT 库需要 QT 库的支持),则在运行时提示 “找不到Qt5Cored.dll文件”,这时将其修改为 “#LIBS += D:/Qwt-6.1.0/lib/qwt.dll” 则解决问题。 正确解决:坑爹的0xc000007b——应用程序无法正常启动(1)根本原因是缺乏所需要的 DLL,提供了错误版本的 dll 相当于没有 DLL, 提示完全一样。 (2)网上有人说缺乏 dx 运行环境,如果属实,也是因为缺乏 dx 相关的 dll。 (3)与程序是 32 还是 64 位没有直接关系,但是与你的程序对应不上的 dll 版本,往往很难发现问题,要引起注意。 (4)生成的 debug 目录下,运行 exe 文件报改错,将缺少的 dll 文件添加进来即可解决,例如 opencv_world411d.dll。 弹窗崩溃:abort() has been called 错误分析及其解决方法调试代码的过程中经常会遇到 abort() has been called 的错误,导致出现这样的原因有: (1)内存泄漏,导致内存不够分配; (2)非法指针访问或者指针访问内存越界出现问题; (3)多线程访问资源出的问题。 参考:R6010 -abort() has been called错误分析及其解决方法 This application failed to start because it could not find or load the Qt platform plugin “windows” 错误解决方法用 inno setup 打包生成了一个安装 exe,U 盘拷到另一台电脑安装运行,出现该错误! 根据错误提示发现是和 platform 有关,是因为前面误删了安装目录下的 platforms 文件夹以及其内部的 qwindows.dll,把 plugins/platform 这个文件夹原封不动地复制到安装包里再打包即可。 Qt中文乱码问题方法一: ui->pushButton->setText(QString::fromLocal8Bit("我是中文"));方法二: 将默认字体设置为 UTF8,再配合 tr("我是中文") 就不会乱码啦。 解决Qt线程关闭问题!QThread: Destroyed while thread is still running耗时操作里面这样判断: while (!isInterruptionRequested())添加析构函数,析构函数里面这样操作: XXXThread:: ~XXXThread() { requestInterruption(); quit(); wait(); } 给放在 Program Files 目录下的 exe 添加写入权限由于 exe 会在本目录下,写入 .ini 文件,如果把 exe 制作成安装包,会安装到 program files 目录下,但在 win10 下 program files 默认是没有写入权限的。 解决方法: vs => 项目属性 =>配置属性 => 链接器 => 清单文件 =>UAC执行级别修改成 requireAdministrator。 error LNK2001:无法解析的外部符号_imp_timeGetTime@0解决方法:将库winmm.lib添加到工程中。 参考:error LNK2001:无法解析的外部符号_imp_timeGetTime@0 error LNK2019: 无法解析的外部符号 加入头文件出现 chrono 和 ratio 的错误在一个使用 FFmepg 的多线程工程中加入 librtmp 第三方开源库,在 chrono 和 ratio 中就会报二十多个错误,尤其是 C4430错误,“C4430 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int” 这个错误,在网上找了很多方法均不行,直到找到这个解决办法,前提是先include : VS => 项目属性 =>配置属性 => C/C++ => 预处理器中加入: __STDC_LIMIT_MACROS 扩展:c++ - C++: __STDC_LIMIT_MACROS和__STDC_CONSTANT_MACROS意味著什麼? __STDC_LIMIT_MACROS 和 __STDC_CONSTANT_MACROS 是一种解决办法,允许 C++ 程序使用标准中指定的stdint.h 宏,而不在 C++ 标准中。 宏( 如 UINT8_MAX 。INT64_MIN 和 INT32_C() ) 可能已经在 C++ 应用程序中定义为其他方式。 为了允许用户口決定是否需要为 C 定义宏,许多实现需要在 stdint.h 包含之前定义 __STDC_LIMIT_MACROS 和 __STDC_CONSTANT_MACROS 。 参考: 加入头文件出现ratio和chrono的错误 每个C11和C ++ 11,不应查看__STDC_LIMIT_MACROS或__STDC_CONSTANT_MACROS ffmpeg Common.h error C3861: “UINT64_C”: 找不到标识符解决方法:在 common.h 中添加如下代码: #ifndef INT64_C #define INT64_C(c) (c ## LL) #define UINT64_C(c) (c ## ULL) #endif #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #ifdef _STDINT_H #undef _STDINT_H #endif # include #endif顺便解决了fatal error C1189: #error : missing -D__STDC_FORMAT_MACROS这个错误。 ERROR: WriteN, RTMP send error 10054 (39 bytes)时间戳过大会导致该错误。原先错误将时间戳单位弄错了,时间戳过大,大了 1000 倍导致的。 VS出现 fatal error C1083: 无法打开包括文件: “sys/socket.h”: No such file ....因为 sys/socket.h 是 Linux 系统下的库文件,所以在 windows 上无法打开,用#include 替换即可。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |