• 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;..includeFFmpeg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    
    // lib路径
    <AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..libwin32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>      
    

    上面是 Debug|Win32 的 include 和 lib 目录配置。

    如何从dll文件导出对应的导出库lib文件?

    具体可参考:

    如何从dll文件导出对应的lib文件?

    DLL库的编写(导出、导入)与使用

    vs调试dll工程

    参考:

    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)”。

    参考:https://www.pianshen.com/article/1192270064/

  • 相关阅读:
    UI 简单练习(联动实例)
    软件工程与计算机科学
    中文编程
    自我介绍
    曾经的梦想
    即时通讯研究学习
    即时通讯研究学习
    创业
    2015-08-12-火影
    看<后海不是海>的随想
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/12164248.html
Copyright © 2020-2023  润新知