VS遇到的一些问题及解决办法(持续更新)
在VS下使用QDebug打印调试信息
问题:
使用 visual studuio 开发 Qt 程序时却看不到打印的调试信息。
解决办法:
右击 “项目名称” -> “属性”,更改 链接器->系统->子系统 为 “控制台 (/SUBSYSTEM:CONSOLE)”
参考:visual studio 2019开发Qt程序,使用CMD打印QDebug调试信息
如何调试到 lib 内的函数
需要是本地电脑上的工程编译出的 lib,具体调试的工程链接该静态库 .lib,这样才能调试到对应的源文件中 .cpp,否则在其他电脑或路径是链接不到库的 .cpp 文件的。
打开别人的Qt版本的VS工程
在网上下载了个别人的工程,编译找不到 QWiget 等头文件,说明 Qt 编译器版本不一致,打开 *.vcproj 文件:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|Win32'" Label="QtSettings">
<QtInstall>msvc2015_32</QtInstall>
<QtModules>core;gui;widgets</QtModules>
<QtBuildConfig>release</QtBuildConfig>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|Win32'" Label="QtSettings">
<QtInstall>msvc2015_32</QtInstall>
<QtModules>core;gui;widgets;opengl;multimedia</QtModules>
<QtBuildConfig>debug</QtBuildConfig>
</PropertyGroup>
发现别人的工程是 VS2015_32,如果你电脑 VS 的 Qt 编译器是 VS2017_32,版本不一致肯定编译不了,所以需要修改 *.vcproj 文件,将上面的两个msvc2015_32
都修改成msvc2017_32
,修改完切进 VS 同意加载所有修改,发现可以找到 QWiget 等头文件了。
补充介绍另一种方法:右键 "项目名称" -> "Qt" -> "Qt Project Settings",从 "Version" 下拉列表选择你的 Qt 编译器版本,我这里是msvc2017_32
。图文参考:vs打开别人的qt项目如何配置
需要查看函数或变量的调用地方
有时候你需要查看某个函数或者变量在哪里被调用,不要再使用ctrl + f
全局查找了,右键该函数或项目,选择 "查找所有引用" 即可。
同理还有:"转到定义" 和 "转到声明"。
VS 快速修改include和lib路径
如果从一台电脑拷贝一个工程,但其工程的 include 和 lib 路径全是绝对路径,一个个在属性里太过麻烦,如何解决?
修改 *.vcproj 文件:
// include路径
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\include;..\include\FFmpeg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
// lib路径
<AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\lib\win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
上面是 Debug|Win32 的 include 和 lib 目录配置。
如何从dll文件导出对应的导出库lib文件?
具体可参考:
vs调试dll工程
参考:
VS_Qt打包程序提示“应用程序无法正常启动(0xc000007b)”
使用DependenciesGui.exe
查看依赖库,发现libeay32.dll
版本不对,要是阿里云 SDK 提供的那个,使用其它库提供的依然会报错。
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2
release 下,在库版本匹配没有问题。但是编译报错error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”
。
解决办法:release 下,工程设置中运行库应该设置为 “多线程 DLL (/MD)”。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!