VS2015/2017/vsCode C++ 报错解决方案 笔记

发布时间:2026/7/11 10:38:00

VS2015/2017/vsCode C++ 报错解决方案 笔记 1~4VS20155往后VS2017部分vsCode想喊百度的ai时可搜opencv内存清理。1、LNK1181cannot open input file ImageProcessing.lib明明路径是对的然后路径上也确实有这个lib文件但就是报错。解决方案solution 属性配置 Project Dependencies 选择main_project然后勾选上其依赖的子project。这样就可以成功编译了参考链接VS2013 error LNK1104: cannot open file .lib2、vs2015 qt ui CannotOpenFileVS2015一打开ui文件就闪退。解决方案右击ui文件选择[打开方式]重新添加并将其设置为默认值添加的路径为C:\Qt\Qt5.9.7\5.9.7\msvc2015_64\bin\designer.exe3、MSB8020: 无法找到 v143 的生成工具(平台工具集 “v143”)。若要使用 v143 生成工具进行生成请安装 v143 生成工具找到项目根目录下”.vcxproj”后缀的文件,用记事本方式打开。将提示无法找到的“v143”全部替换成你自己对应的“v140”。切换回Visual Studio会弹出以下提示我们选择“全部重新加载”。在菜单中选择“生成-重新生成解决方案”。选择生成-重新生成解决方案这时候可以看到生成成功没有报错完美解决问题。over4、imshow图像无法显示 或显示全白且无法点开方法一cv::destroyAllWindows()出现imshow图像无法显示解决方案cv::destroyAllWindows();//先显示出来(cv::imshow)再销毁,再重新用就可以了只需用一次就能恢复正常cv::destroyAllWindows();//先显示出来(cv::imshow)再销毁,再重新用就可以了只需用一次就能恢复正常方法二原因可能是由于上一次运行时图像imshow出来的位置是在拓展屏。再次运行时图像imshow的位置仍然默认在拓展屏但电脑并没有接上拓展屏。导致图像没有正常显示且无法点击打开。解决方案将拓展屏接上持续运行程序一次将无法显示的图像拉到非拓展屏的主桌面然后点击图像右上角的“X”把图像关闭后再结束运行程序。即可。拔掉拓展屏后程序重新运行一次图像即可正常显示。5、E1696 无法打开Qt源文件查看自己安装的qt插件名字是否与工程本身设置的对上。不是自己安装的那个名字的话工程会找不到Qt相关的头文件。E1696无法打开源文件 “platform.winmd”C1107未能找到程序集“platform.winmd”: 请使用 /AI 或通过设置 LIBPATH 环境变量指定程序集搜索路径在项目属性的C/C常规页找到“使用Windows运行时扩展”选为“是”如果问题没解决的话在如下路径里找到了platform.winmd所在的文件夹然后可以试着在其他#using指令里加一下windows.winmd同理实在找不到可用软件everything搜索6、C2440initializing: cannot convert from const wchar_t [5] to TCHAR *原代码TCHAR szFileName[MAX_PATH] { 0 }; //TCHAR* szVersion (PWCHAR)v1.0; TCHAR* szVersion Lv1.0; TCHAR dwBufferSize MAX_PATH;解决方案将 TCHAR* szVersion Lv1.0;替换为 TCHAR* szVersion (PWCHAR)v1.0;即TCHAR szFileName[MAX_PATH] { 0 }; TCHAR* szVersion (PWCHAR)v1.0; //TCHAR* szVersion Lv1.0; TCHAR dwBufferSize MAX_PATH;即可。7、E0167const wchar_t * 类型的实参与 PWCHAR 类型的形参不兼容原代码//return GenerateMiniDump(NULL, lpExceptionInfo, (PWCHAR)test); return GenerateMiniDump(NULL, lpExceptionInfo, Ltest);解决方案将 return GenerateMiniDump(NULL, lpExceptionInfo, Ltest);替换为 return GenerateMiniDump(NULL, lpExceptionInfo, (PWCHAR)test);即return GenerateMiniDump(NULL, lpExceptionInfo, (PWCHAR)test); //return GenerateMiniDump(NULL, lpExceptionInfo, Ltest);即可。8、error LNK2001: 无法解析的外部符号 _DllMainCRTStartup当创建DLL项目时尤其是一些资源转化成dll时其不要dllmain()时会出现error LNK2001: 无法解析的外部符号 _DllMainCRTStartup12 错误。解决办法右击项目属性--连接器--高级--无入口点改成 是。/NOENTRY 选项是创建纯资源DLL所必需的。使用此选项可防止LINK将对_main的引用链接到DLL。9、VS编译库时生成DLL没有产生lib的解决方法(三种)使用vs生成DLL时没有产生lib一般发生在我们自己创建的DLL项目中产生这个问题的主要原因是没有导出类。导出DLL标记有两种方法只要采用其中一种就可以解决。1.添加def文件在工程上右键 - 添加 - 新建项 - 选模块定义文件(.def) - 随便输入个名字 - 添加或项目-属性-链接器-输入-模块定义文件设置你的模块定义文件默认为lib.def,也可以改成你想要定义文件的名称。注意这里是模块定义文件的名称不是.lib文件。2.导出类// 注意_declspec(dllexport)导出标记在class与类名中间 class _declspec(dllexport) ImageProcessing { public: ImageProcessing(); ~ImageProcessing(); }_declspec(dllexport) int fun(int m); // 函数的导出标记位置在返回值最前面超重点DLL类的导出标记在class与类名之间而函数的导出标记在返回类型之前3.预处理器定义添加点击应用然后在C/C±预处理器-预处理下定义-添加LIBLEPT_EXPORTS10、C3646未知重写说明符参考链接C报错 error C3646: 未知重写说明符类的定义的先后顺序有误如果一个类的成员中包含另一个类则被包含的类的生命一定要在包含的类之前。class Auto { Tire tire; } class Tire { int weight; } // This will cause error C3656解决方法调整类的位置。11、error MSB3073: 命令“setlocal打开自己项目右键单击属性进入生成后事件命令行查看自己路径是不是正确的。解决方法如下图12、C3688:文本后缀”銆”无效:未找到本运算符模板operator“銆”解决方法在菜单栏中点击文件目录下的高级保存选项进入之后将编码由Unicode(UTF-8无签名更换为简体中文GB2312-代码页936 就好。若找不到“高级保存选项”over。13、CMake报错编译过程中一直显示缺少dllcmake编译过程中一直显示缺少dll则直接将.dll复制到cmake安装文件夹的bin文件夹里即可。14、CMake报错Invalid character escape \T. Call Stack (most recent call first)CMake编译报错 Invalid character escape \T. Call Stack (most recent call first)解决方案将填入的路径里的“\”全部改成“/”就好。如果检查斜杠都对了那就根据报错信息看一下路径是否都存在。15、QT error C1083: Cannot open include file: QMainWindow: No such file or directory前情提要一个小时前都还能正常编译允许的qt工程在尝试添加现有dll工程与同一个解决方案下时突然间一堆qt报错基本都是C1083找不到qt头文件的错误。其他解决方法都尝试过还是一直未能解决报错。可以试下$(Qt_INCLUDEPATH_)16、运行后没有黑色控制台显示17、Qt项目的exe拷过去后不能运行17.1 缺dll缺dll的在路径“C:\Qt\Qt5.9.7\5.9.7\msvc2015_64\bin”下找缺什么补什么放到exe同级即可。17.2 缺平台集和无法读取jpg图片路径“C:\Qt\Qt5.9.7\5.9.7\msvc2015_64\plugins”缺平台集把文件夹“platforms”放到exe同级位置。无法读取jpg图片把文件夹“imageformats”放到exe同级位置。示例jpg图片和平台集文件夹以及缺的dll都放在exe同级。18、vs release模式下无法断点123调试–》选项–》调试常规一下两个选项取消勾选19、cout打印信息缺失及中文乱码问题现象一开始是发现 “cout” 打印信息“printf()”打印信息正常。故做了以下尝试1cpp文件顶部位置添加#pragma execution_character_set(utf-8)2main函数内起始位置添加SetConsoleOutputCP(65001);//更改控制台输出编码 —— 65001表示UTF-8编码格式 QTextCodec::setCodecForLocale(QTextCodec::codecForName(UTF-8));//设置显示中文3改变文件编码格式。尝试过程中一直出现问题1库工程的cpp内 cout 打印中文乱码2库工程的cpp内 cv::imshow 窗口名字中文乱码3test工程的main函数中 cout 打印中文乱码4test工程的通用函数cpp中 cout 打印中文乱码5test工程的通用函数cpp中 qDebug() 打印中文乱码6test工程的通用函数cpp中 QString 类型成员中文乱码最终成功解决方案1统一各单元所在cpp的编码格式即【简体中文(GB2312) - 代码页 936】2test工程的通用函数cpp中添加“#pragma execution_character_set(utf-8)”3string类型转QString类型时将 QString::fromStdString(stringVal) 换成 QString::fromLocal8Bit(stringVal.data()) 。我的库工程是纯C工程test是QT工程。因为test中需要用到QT的QSettings来解析配置文件来获取所需信息。并且test中用上了 qDebug() 来打印信息。test工程的通用函数cpp中有一个函数要求必须加上 “#pragma execution_character_set(utf-8)”故该通用函数cpp中编码格式已转变为utf-8。即在该通用函数cpp中打印信息需用 qDebug() 来打印。然后string类型转QString类型时需用 QString qStringVal QString::fromLocal8Bit(stringVal.data())// utf-8的情况下用而不能用 QString qStringVal QString::fromStdString(stringVal) 。// 默认编码格式是GB2312的时候解释qDebug() 与 cout 需要的编码格式不一样正好互斥。qDebug() 是 【utf-8】cout 是【简体中文(GB2312) - 代码页 936】20、串口通信接收端接收数据互相乱码现象串口通信发送端正常但两边接受数据都相互乱码。原因两边的编码格式不同可能一边是utf-8一边是GB2312。解决办法两端的编码格式同一即可。例如qt的话就一两行代码即可(设置编码格式)。21、error C2760: 语法错误: 意外的令牌“标识符”预期的令牌为“类型说明符解决方法22、QTChart 已引用还是报错解决方法23、VS 引用了编译即报错在使用QChart时可能会出现添加QValueAxis时报错解决方案可使用如下几种错误原因可能是造成与windows.h冲突如果项目中包含windows.h文件可将该文件修改为qt_windows.h。若项目中未包含该头文件可尝试如下做法。在有错误输出类似于max、min定义错误时错误原因模板函数max和visual c中的全局宏max冲突error C2059: 语法错误:“L_TYPE_raw” d:\qt5.7.1\5.7\msvc2013\include\qtcharts\qvalueaxis.herror C2061: 语法错误: 标识符“QDateTime” d:\qt5.7.1\5.7\msvc2013\include\qtcharts\qdatetimeaxis.h解决方案可在项目属性中预定义添加NOMINMAX禁止使用c的宏定义。修改方式项目属性 —— C/C —— 预处理器 —— 预处理器定义。或是在pro文件中添加DEFINES NOMINMAX。加括号与vc中的max和min宏定义区分开。(std::max)(argv).24、字符 L“XXX”PWchar等编译不过解决方法25、vs2017一点击 “本地窗口调试” 就卡死当使用Visual Studio 2017VS2017进行调试时如果遇到点击“本地窗口”Locals Window导致程序卡死的情况可以尝试以下几种解决方法禁用Microsoft符号服务器本人该项就已经解决了问题进入“工具”Tools-“选项”Options-“调试”Debugging-“符号”Symbols。在“符号文件.pdb位置”Symbol file (.pdb) locations下取消勾选“Microsoft符号服务器”Microsoft Symbol Servers。在“自动符号加载首选项”Automatic symbol loading preferences下选择“仅指定的模块”Load only specified modules。应用更改并尝试再次调试。启用托管兼容模式进入“工具”Tools-“选项”Options-“调试”Debugging。勾选“使用托管兼容模式”Use Managed Compatibility Mode。应用更改并尝试再次调试。清理与构建清理解决方案并重新构建所有项目。这可以解决因旧文件或缓存导致的问题。26、检查内存泄漏工具Visual Leak Detector | Enhanced Memory Leak Detection for Visual C内存泄漏工具的使用文档有了它再也不怕 C 内存泄露了_51CTO博客_C 内存泄露VC内存泄漏检测工具VLD使用方法VC内存泄漏检测工具VLD使用方法 - 碎银三二两 - 博客园27、向日葵远程别人后自己电脑键盘就失效方法一可以尝试按ctrlalt或是这两个键顺序交换。(第一次用的时候有效后面都无效)方法二电脑锁定或睡眠后重新打开。(后面用的该方法有效)28、Visual Studio 2015 远程调试方法需求在没有安装VS2015的机器上安装发布的程序运行出现异常而开发机器上不会出现异常。因此采用远程调试。开发的电脑a中有源码工程没有开发工具的电脑b中放了a工程编译出的exe。需要在电脑b中运行exe的同时电脑a中的工程可以打断点调试改bug。解决方案启动远程调试的方法【Visual Studio 2015 远程调试方法】_vs2015 远程调试-CSDN博客1、在 Visual Studio 的安装目录中找到远程调试工具msvsmon.exe拷贝C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger文件夹下的x64整个文件夹压缩发到客户机中。2、在客户机中启动msvsmon.exe如下图设置客户机上 身份验证模式为无身份验证即禁用身份验证勾上“允许任何用户进行调试(A)”。3、关闭防火墙或者设置允许远程调试。4、将程序拷贝到虚拟机。执行程序。5、在主体机器上启动 Visual Studio 点击 “调试” “附加到进程”。设置如下图附加测试程序到进程备注注意PDB一定要加载正确选择调试-选项-符号选择PDB路径29、GitHub加速解决办法使用Watt Toolkit 。「Watt Toolkit」是一个开源跨平台的多功能 Steam 工具箱。它是由江苏蒸汽凡星科技有限公司开发与维护的 (GNU) 自由开源软件采用 GPL v3 开源协议同时发布于 Github 及 Gitee。可用于加速GitHub。一、下载与安装官方正版下载地址跳转「Watt Toolkit」(原steam)。二、Watt Toolkit的使用及配置1、双击运行桌面快捷方式就能成功进入Github啦注意三、加速失败443端口被占用的解决办法这个报错大概率是你电脑里安装了虚拟机 VMware 而开启了虚拟机的共享文件夹就会导致计算机的443端口被占用。本人就是这种情况解决方案如下1、打开虚拟机选择菜单栏中的编辑 -首选项选择共享虚拟机over其余常用科研工具常用科研工具持续更新_watt toolkit 类似-CSDN博客29.1 修改 Hosts 文件这是最常见且有效的解决方案之一通过直接指定 GitHub 的 IP 地址来绕过 DNS 污染。步骤获取最新的 GitHub 相关域名 IP 地址访问 https://ipaddress.com/website/github.com 查找当前可用的 IP或使用 https://github.com.ipaddress.com/修改系统的 hosts 文件Windows:C:\Windows\System32\drivers\etc\hostsMac/Linux:/etc/hosts添加以下内容IP 地址请替换为最新获取的# GitHub Start 140.82.114.4 github.com 185.199.108.153 assets-cdn.github.com 199.232.69.194 github.global.ssl.fastly.net # GitHub End刷新 DNS 缓存Windows: 打开命令提示符输入ipconfig /flushdnsMac: 终端输入sudo killall -HUP mDNSResponderLinux: 终端输入sudo systemctl restart network-manager30、SVN无法清理现象SVN更新下载失败显示要清理。但清理时又显示清理失败显示系统找不到 “.svn-base” 文件找不到指定的文件。(无论哪个路径都一样报一样的错)“D:DXSWsvn\pristine\ff\ff771803791d080d26c87e4bae7dded5344d4427.svn-base”系统找不到指定的文件。实则就是说 svn-base 这个文件被误删或者360把这个文件给隔离了才导致svn报错。那我们就直接进到对应的目录D:DXSWsvn\pristine\ff新建一个空的txt文件然后重命名为ff771803791d080d26c87e4bae7dded5344d4427.svn-base后面这个.svn-base 是文件后缀名把.txt改成.svn-base最后重新执行clean up问题解决解决办法直接找到对应路径手动创建一个报错框里提示的那个同名文件 即可。参考链接svn更新、还原、清理报错解决 - 仰望星空还有梦 - 博客园看上图报的是 不能打开文件over31、Kaggle手机验证解决办法1.扩展程序里搜Header Editor2.点击“管理”3. 上方导航栏点击【导出和导入→ 下载规则输入框中输入https://azurezeng.github.io/static/HE-GoogleRedirect.json→点击输入框右方的下载→下载完成后点击保存】32、LNK2005 class BasicsProcess bp (?bp3VBasicsProcessA) already defined in ImageProcessing.obj ImageProcessing错误原因class BasicsProcess bp在ImageProcessing.obj和Label_Comparator.obj中被重复定义。即 在同一工程中的ImageProcessing.cpp和Label_Comparator.cpp内(多个编译单元)皆定义了对象 BasicsProcess bp;解决方法另外弄个放全局对象的 .h 和 cpp然后在要用到该bp对象的cpp文件中 #include PublicObj.h 即可 // PublicObj.h #pragma once #include BasicsProcess.h extern BasicsProcess bp; // 仅声明不分配内存 // PublicObj.cpp #include PublicObj.h BasicsProcess bp; // 实际定义33、openCV4.5.5 相关编译期间报错test_qrcode_encode.cpp文件相关的报错解决方案将文件中的日文删除即可。调用设置可执行文件目录 opencv-4.5.5\build\install\x64\vc15\bin 包含目录 opencv-4.5.5\build\install\include opencv-4.5.5\build\install\include\opencv2 库目录 opencv-4.5.5\build\install\x64\vc15\lib查看使用版本#include opencv2/opencv.hpp #include iostream int main() { std::cout OpenCV version: CV_VERSION std::endl; std::cout Major version: CV_MAJOR_VERSION std::endl; std::cout Minor version: CV_MINOR_VERSION std::endl; //std::cout Revision version: CV_REVISION std::endl; cv::Mat img(100, 100, CV_8UC3, cv::Scalar(255, 0, 0)); std::cout OpenCV test: image created img.cols x img.rows std::endl; //cv::waitKey(); system(pause); return 0; }34、【vsCode】报错[rollbar] 未处理的异常: 未处理的拒绝承诺: build Error: ENOENT: no such file or directory, stat E:\S400QT5\SLM\build_release\.cmake\api\v1\reply\target-ALL_BUILD-Debug-3b84ea82e03ce205a090.json {}现象代码完全没改有时候突然就运行不了了。报错[rollbar] 未处理的异常: 未处理的拒绝承诺: build Error: ENOENT: no such file or directory, stat E:\S400QT5\SLM\build_release\.cmake\api\v1\reply\target-ALL_BUILD-Debug-3b84ea82e03ce205a090.json {}qt相关的头文件引用部分标红。本质VS Code CMake 的缓存/配置彻底乱了导致 IDE 连“该用哪个目标运行”都找不到于是抛出了 “selectLaunchTarget Error: ENOENT ... cache-xxx.json。”错误。即CMake 之前生成的配置缓存文件不见了或被删坏了但 VS Code 还在试图用它。解决步骤直接删除整个.cmake文件夹。如 E:\S400QT5\SLM\build_release\.cmake让 CMake 重新生成索引VSCode按CtrlShiftP输入并选择CMake: Configure等待底部状态栏显示[CMake] Configuring done。此时 CMake 会在build_release里重新生成一个全新的.cmake文件夹里面会有正确的target-xxx.json文件。选择启动目标并运行即 重新运行即可在 VS Code 底部状态栏点击“Select Launch Target”选择你的可执行文件点击 ▶️ 运行over~35、

相关新闻