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.hC99标准中指定但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>

posted @ 2022-08-22 21:01  封兴旺  阅读(1893)  评论(0编辑  收藏  举报

联系方式: 18274305123(微信同号)