vs报错及配置
// QString originalString = "a b c";
// QString modifiedString = originalString.replace(QRegExp("\\s"), "\\ ");
// qDebug() << "Original String:" << originalString;
// qDebug() << "Modified String:" << modifiedString.toLocal8Bit().data(); // 实际上就是转为一个斜杠了,只是qDebug 输出的时候输出了两个。
//使用toLocal8Bit().data() 来避免 qDebug() 对转义字符的处理。这样你就可以在 Qt 的调试输出中看到实际的反斜杠了.也就是一个斜杠了!!!
vs+qt 需要支持中文的话: 二选一, 1: 添加 #pragma execution_character_set("utf-8") 2. 在 项目->右键属性->C/C++ -> 命令行,在下方输入框添加 /utf-8,就会在编译时采用utf-8编码来编译
1.
vs2017新建qt项目什么都还没做,出现以下错误:
错误 : 项目“D:\mTensorflow\yolov4_darknet-master\build\darknet\darknet.vcxproj”配置“Debug|Win32”的 Designtime 生成失败。IntelliSense 可能不可用。
设置环境变量 TRACEDESIGNTIME = true 并重启 Visual Studio 以进行调查。
关闭vs2017并按照要求设置环境变量:
这样将自动打开vs2017,再次打开刚刚那个qt项目,还是什么都没做出现如下提示:
于是我找到%temp&,可以在普通cmd里直接输入这个就出现了 'C:\Users\ADMINI~1\AppData\Local\Temp' (ADMINI~1就是Administrator),或者自己去环境变量找
然后找到xxxx.designtime.log并打开,找到错误(一般在最后面)
去百度了下MSB3491错误
错误 LNK2026 模块对于 SAFESEH 映像是不安全的。
/SAFESEH:NO
error LNK2019:无法解析的外部符号_main ...
#undef main 或者在 .cpp文件里直接引用 (并且记得#pragma comment(lib, "xx.lib"))
同一项目放到家里跑,一大堆err,并且一用 QTherad也有一大堆错误
预编译里面加 __STDC_LIMIT_MACROS 允许C ++程序使用stdint.h
C99标准中指定但C ++标准中没有的宏的解决方法
error C2664
解决:把头文件和.cpp构造函数参数改成QWidget
(警告). QThread: Destroyed while thread is still running
解决(析构的时候是 main -> sub -> sub run):
8.
解决1:
属性 -> 链接器 -> 调试 ->生成调试信息 选择“禁用(/Od)”
属性 -> C/C++ -> 优化 ->优化 选择“禁用(/Od)”
属性 -> C/C++ -> 常规 -> 调试信息格式 选择“程序数据库(/Zi)”
解决2:
工具→选项→调试:关闭 启用”仅我的代码“,开启 要求源文件与原始版本完全配备
error MSB3073: 命令“"\bin\rcc.exe" --list "myTelnet.qrc" > "Debug\rcc_list.txt" 2> nul”已退出,代码为 3
这个报错很有可能是基本的附加包含目录或者附加库目录有问题如vsqt项目改为:附加包含目录 $(Qt_INCLUDEPATH_);%(AdditionalIncludeDirectories);附加库目录 $(Qt_LIBPATH_);%(AdditionalLibraryDirectories);注意加qt进去
error LNK2019: 无法解析的外部符号 __imp____iob_func,该符号在函数 __libssh2_debug 中被引用
stdin, stderr, stdout等基础函数vs2015和以前的定义得不一样,所以报错。我们需要把这个符号更改成新的方法名
添加: #pragma comment(lib,"legacy_stdio_definitions.lib") extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; } 或者: #if _MSC_VER>=1900 #include "stdio.h" _ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned); #ifdef __cplusplus extern "C" #endif FILE* __cdecl __iob_func(unsigned i) { return __acrt_iob_func(i); } #endif /* _MSC_VER>=1900 */ 有些过期的方法。微软自己也出了一个库文件专门解决这个问题,在连接器的附加依赖项中添加“legacy_stdio_definitions.lib;” 但这种方法并不能解决所有问题
qt error: cannot find curl: Permission denied
LIBS += $$PWD:/lib 改为了 LIBS += -LD:/lib
error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead ...
1、听visual studio的话,改用新版函数,但是有时候会比较麻烦。
2、在文件开头添加 #define _CRT_SECURE_NO_WARNINGS
3、在 项目->属性->C/C++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS
error C4996: 'av_register_all': 被声明为已否决
右键项目属性 -> C/C++ -> 常规 -> SDL检查设为“否”
error C2059: 语法错误:“;”
如果确认语法没问题,那就把所有注释的最后一个符号改为英文符号
文件改为utf-8:
vs2022安装qt tool 加载qt 5.9_msvc2015 : error C3615: constexpr 函数“qCountLeadingZeroBits”不能生成常量表达式 ... :
typedef 名称中使用的未命名的类不能声明非静态数据成员、成员枚举或成员类以外的成员 ffmpeg_ts D:\MyProgram\FFMPEG\A_TS\ffmpeg_ts\main.cpp :
c++新版本 typedef struct{ }_A; 这样里面不能初始化等,所以给个名字可以解决: typedef struct _A{ }_A;
qt应用程序图标设置:
纯qt的话:
1 .ico图标文件放到Resource file中,然后在vs中项目中找到Resource file,右键添加现有项,把刚才的ico 文件添加进来
2 在.pro 文件的最后输入 RC_ICONS = ****.ico (ico图片的文件名)
注意:如果找不到.pro文件,在QT vs tools 中找到 Create Basic .pro File...即可生成.pri 和.pro 文件。
vs:
方案1:右键添加 -> 资源,选择.rc -> 然后再右键导入ico图片(.png 不支持) // 这里我添加资源的时候直接退出去了
方案2:准备一个 title.ico -> 手动创建个文件 ico.rc 内容就是:IDI_ICON1 ICON DISCARDABLE "title.ico" -> 然后直接记事本打开.vcxpro 在最后添加 <ItemGroup><ResourceCompile Include="ico.rc" /></ItemGroup>
本文来自博客园,作者:封兴旺,转载请注明原文链接:https://www.cnblogs.com/fxw1/p/16614253.html