当前位置: 首页 > news >正文

友汇网站建设一般多少钱/搜索电影免费观看播放

友汇网站建设一般多少钱,搜索电影免费观看播放,中职学校网站建设的厂家,wordpress动态链接301文章目录前言一、如何在VisualStudio2019中新增项目版本信息二、在程序中调用项目版本信息1.引入库version.lib1.1.通过vs自带的属性页引入库1.2.手动引入库2.新增版本信息读取类3.调用类获取信息总结前言 本文主要讲述如何在Visual Studio 2019 以及Qt结合的开发项目中&#…

文章目录

  • 前言
  • 一、如何在VisualStudio2019中新增项目版本信息
  • 二、在程序中调用项目版本信息
    • 1.引入库version.lib
      • 1.1.通过vs自带的属性页引入库
      • 1.2.手动引入库
    • 2.新增版本信息读取类
    • 3.调用类获取信息
  • 总结


前言

本文主要讲述如何在Visual Studio 2019 以及Qt结合的开发项目中,新增版本信息到资源;并且可以通过代码读取资源存储的版本信息。


一、如何在VisualStudio2019中新增项目版本信息

  1. 切换到解决方案视图中

  2. 在解决方案名称上右键

  3. 添加

  4. 资源

  5. 在这里插入图片描述

  6. 选择Version,点击新建

  7. 1

  8. 按照自己的公司,版权,版本信息填写并保存编译

二、在程序中调用项目版本信息

为了保证整个项目的统一性,建议版本维护就在这里维护,如果项目中,界面里要调用到相关信息,那么就通过如下操作对里面的信息进行读取

1.引入库version.lib

1.1.通过vs自带的属性页引入库

  1. 切换到属性管理器页
  2. 右键Debug/Release,添加新项目属性表
  3. 随便起个名
  4. 2
  5. 在链接器-输入-附加依赖项中添加version.lib
  6. 应用并确定

1.2.手动引入库

代码如下(示例):

#pragma comment(lib, "version.lib")

2.新增版本信息读取类

新增头文件

#pragma once
#include <QObject>
#include <windows.h>
#include <tchar.h>class VersionUpdate
{
public:QString product_name = "";QString company_info = "";QString copyright_info = "";QString version_info = "";QString VersionUpdate::GetVersion(){int nMaxPathName = 4096; // Max length of file name/pathTCHAR* pBuffer;UINT nItemLength;void* pData, * lpBuffer;QString sVersion;DWORD dwInfoSize, dwHandle;VS_FIXEDFILEINFO* pFileInfo;// Get the file path and namepBuffer = new TCHAR[nMaxPathName];GetModuleFileName(NULL, pBuffer, nMaxPathName - 1);// Get File Version Info sizedwInfoSize = GetFileVersionInfoSize(pBuffer, &dwHandle);if (dwInfoSize > 0){pData = new TCHAR[dwInfoSize];if (GetFileVersionInfo(pBuffer, dwHandle, dwInfoSize, pData)){//获取产品名称if (VerQueryValue(pData, _T("\\StringFileInfo\\080404b0\\ProductName"), &lpBuffer, &nItemLength)){product_name = QString::fromWCharArray((LPCTSTR)lpBuffer, nItemLength);}//获取公司信息if (VerQueryValue(pData, _T("\\StringFileInfo\\080404b0\\CompanyName"), &lpBuffer, &nItemLength)){company_info = QString::fromWCharArray((LPCTSTR)lpBuffer, nItemLength);}//获取版权信息if (VerQueryValue(pData, _T("\\StringFileInfo\\080404b0\\LegalCopyright"), &lpBuffer, &nItemLength)){copyright_info = QString::fromWCharArray((LPCTSTR)lpBuffer, nItemLength);}//获取主次版本号if (VerQueryValue(pData, _T("\\"), &lpBuffer, &nItemLength)){pFileInfo = (VS_FIXEDFILEINFO*)lpBuffer;sVersion = QString("%1.%2.%3.%4").arg(pFileInfo->dwProductVersionMS >> 16).arg(pFileInfo->dwProductVersionMS & 0xFFFF).arg(pFileInfo->dwProductVersionLS >> 16).arg(pFileInfo->dwProductVersionLS & 0xFFFF);// Calculate the product version as a number, you can delete the next statement if you don't need it.DWORD dwProductVersion = (pFileInfo->dwProductVersionMS >> 16) * 1000 +(pFileInfo->dwProductVersionMS & 0xFFFF) * 100 +(pFileInfo->dwProductVersionLS >> 16) * 10 +(pFileInfo->dwProductVersionLS & 0xFFFF) * 1;version_info = sVersion;}}// Delete the data bufferdelete[] pData;}// Get rid of the allocated string bufferdelete[] pBuffer;return sVersion;}
private:
};

我的办法很笨,反正就是这么用就能拿到。借用了别人的部分想法


3.调用类获取信息

//版本信息获取
#include "version_info.h"
int main(int argc, char* argv[])
{VersionUpdate newVersionInfo;newVersionInfo.GetVersion();C_NAME = newVersionInfo.product_name;soft_version = newVersionInfo.version_info;C_NAME.truncate(C_NAME.indexOf(QChar::Null));qDebug() << QString("日志记录开始 软件%1 版本%2").arg(C_NAME).arg(soft_version);
}

基本上就这样,最后版本信息就能存储并调用
原来的版本信息:
3

改后的版本信息:
4

总结

以上为如何在Visual Studio 2019 以及Qt结合的开发项目中,新增版本信息到资源;并且可以通过代码读取资源存储的版本信息。

相关文章:

Visual Studio 2019 + Qt 项目版本信息新增到资源以及通过代码读取资源存储的版本信息

文章目录前言一、如何在VisualStudio2019中新增项目版本信息二、在程序中调用项目版本信息1.引入库version.lib1.1.通过vs自带的属性页引入库1.2.手动引入库2.新增版本信息读取类3.调用类获取信息总结前言 本文主要讲述如何在Visual Studio 2019 以及Qt结合的开发项目中&#…...

裸辞两个月还能不能找到工作?亲身经历告诉你结果·····

这是我在某论坛看到的一名网友的吐槽&#xff1a; 软件测试四年&#xff0c;主要是手动测试&#xff08;部分自动化测试和性能测试&#xff0c;但是用的是公司内部自动化工具&#xff0c;而且我自动化方面是弱项。&#xff09;现在裸辞两个月了&#xff0c;面试机会少而且面试…...

2023华为面试真题

【华为】面试真题&#xff1a; 面试前需要准备&#xff1a; 1. Java 八股文&#xff1a;了解常考的题型和回答思路&#xff1b; 2. 算法&#xff1a;刷 100-200 道题&#xff0c;记住刷题最重要的是要理解其思想&#xff0c;不要死记硬背&#xff0c;碰上原题很难&#xff0…...

【C++】C++11新特性——基础特性

文章目录一、列表初始化1.1 {}初始化1.2 initializer_list类型二、类型推导2.1 auto2.2 auto注意事项2.3 decltype三、新增与改进3.1 nullptr3.2 范围for3.3 array3.4 forward_list3.5 unordered系列3.6 final与override一、列表初始化 1.1 {}初始化 C11 引入了一个新的初始化…...

Mac 遇到pip: command not found问题的解决

Mac 遇到pip: command not found问题的解决在学习Playwright时候&#xff0c;需要下载相关依赖Playwright 是专门为满足端到端测试的需要而创建的。Playwright 支持所有现代渲染引擎&#xff0c;包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上进行本地测试或…...

[ 云计算 | Azure ] Episode 03 | 描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx

正常情况如果你不是会计&#xff0c;或者对钱相关的数字比较敏感的财务&#xff0c;本文的一些东西你不会接触的&#xff0c;但是最为云架构或者云运营&#xff0c;你可能会遇到如何采购亦或者估算的我成本和运营成本等等&#xff0c;所以本文的一些知识点就需要进行一定的了解…...

STM32F103R8T6 SPWM实现正弦波输出

前言 PWM合成正弦波&#xff0c;原理什么的不详细说了&#xff0c;概括一下就是 PWM有效面积的积分 正弦波的有效面积。PWM的频率越快&#xff0c;细分的越多&#xff0c;锯齿也就越不明显。 做法是&#xff1a;首先利用正弦波取点软件&#xff0c;取点1000个&#xff0c;生…...

Oracle 11g创建和删除数据库实例

一、创建数据库实例 1.点击“开始” -> “Oracle -OraDb11g_home1” -> “Database Configuration Assistant” 2.点击“下一步” 3.选择“创建数据库”&#xff0c;点击“下一步” 4.默认设置&#xff0c;不用更改&#xff0c;直接点击“下一步” 5.填写要创建的“实例…...

MySQL(四)视图、存储过程、触发器

视图、存储过程、触发器视图检查选项视图的更新存储过程存储过程基本语法变量系统变量用户自定义变量局部变量if判断参数casewhile循环repeat循环loop循环cursor游标handler条件处理程序存储函数触发器视图 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据…...

在 Ubuntu 下编写 C++

在 Ubuntu 下编写 C 在 Ubuntu 上面编写 C&#xff0c;本章节内容主要介绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一 个 C源文件。通过编写最简单的示例“Hello,World&#xff01;”。带领大家学习如何在 Ubuntu 终端下编 辑和编译 C。这里要求大家会在 Ubuntu 上使用 vi/vim…...

Linux主要目录的意思

Linux目录的意思 文章目录Linux目录的意思bin目录&#xff08;命令目录&#xff09;&#xff1a;二进制目录&#xff0c;二进制是可以直接执行的机器码&#xff0c;里面存放着可以执行的命令&#xff1b;bin目录右下角有个箭头类似于Windows的快捷方式 sbin目录&#xff1a;系…...

启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)

背景&#xff1a; go代码启动以后里面涉及到修改ip地址等操作&#xff0c;需要管理员权限。打包好的exe文件双击执行默认是没有管理员权限的&#xff0c;那么修改ip就会提示需要管理员权限。 解决方法1&#xff1a;右键以管理员权限运行exe文件 解决方法2&#xff1a;编译exe…...

Springboot怎么快速集成Redis?

前言其实在Springboot中集成redis是一个非常简单的事情&#xff0c;但是为什么要单独输出一篇文章来记录这个过程呢&#xff1f;第一个原因是&#xff0c;我记性不是太好&#xff0c;这次把这个过程记录下&#xff0c;在新的项目搭建的时候或者需要在本地集成redis做一些其他相…...

COM技术简单介绍

COM (Component Object Model) 是一种面向对象的编程技术&#xff0c;它在 Windows 操作系统中广泛使用。COM 提供了一种标准的方法来创建和使用可重用的软件组件&#xff0c;这些组件可以通过不同的编程语言和应用程序进行访问和使用。 COM 技术的主要特点包括&#xff1a; 组…...

NetworkMiner网络取证分析工具(26)

预备知识 NetworkMiner是一款windows平台下开放源代码的网络取证分析工具&#xff0c;同时也是一款比较好的协议分析工具&#xff0c;它通过数据包嗅探或解析PCAP 文件能够检测操作系统&#xff0c;主机名和网络主机开放的端口。 除了能够进行基本的数据包抓取分析N…...

Lombok 常用注解

文章目录简介MAVEN 依赖常用的注解1. Data 注解 :2. Setter 注解&#xff1a;3.Getter 注解&#xff1a;4.Log4j or Slf4j 注解5.NoArgsConstructor注解&#xff1a;6.AllArgsConstructor注解&#xff1a;7.RequiredArgsConstructor注解:8.Builder注解&#xff1a;9.Cleanup注解…...

SAP 生产订单和成本收集器在核算上的主要区别

生产订单&#xff1a; 特点&#xff1a; 1、 按照批次进行核算 2、 只有完全完工&#xff0c;才能够进行差异分析&#xff0c;分析差异来源。 目标制造费用&#xff1a;按照工单创建确认的作业数量*计划作业价格的乘积得到&#xff1b; 实际制造费用&#xff1a;按照作业确认…...

Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流

场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流&#xff1a; Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客 Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流&…...

【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)

【大数据处理与可视化】一 、大数据分析环境搭建&#xff08;安装 Anaconda 3 开发环境&#xff09;实验目的实验内容实验步骤一、下载Anaconda安装包二、安装Anaconda3三、验证Anaconda是否安装成功四、Jupyter Notebook的使用1. 启动Anaconda自带的Jupyter Notebook2. 在code…...

Python3-输入和输出

Python3 输入和输出 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法&#xff0c;标准输出文件可以用 sys.stdout 引用。 如果你希望输出的形式更加多样&#xff0c;可以使用 str.format() 函数来格式化输出值。…...

Java后端通用接口设计

1、接口的响应要明确表示接口的处理结果 为了将接口设计得更合理&#xff0c;我们需要考虑如下两个原则&#xff1a; 对外隐藏内部实现。即服务A调用服务B&#xff0c;如果服务B异常&#xff0c;但是我们不要直接把服务B的状态码、错误描述直接暴露给用户&#xff1b; 设计接…...

万字长文带你走进MySql优化(系统层面优化、软件层面优化、SQL层面优化)

文章目录系统层面优化采用分布式架构使用缓存使用搜索引擎软件层面优化调整 MySQL 参数配置定期清理无用数据创建索引创建索引普通索引唯一索引全文索引组合索引空间索引主键索引外键索引索引前缀适合创建索引的场景不适合创建索引的场景优化表结构分库分表SQL优化explain执行计…...

云原生安全2.X 进化论系列|云原生安全2.X未来展望(4)

随着云计算技术的蓬勃发展&#xff0c;传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展&#xff0c;成为赋能业务创新的重要推动力&#xff0c;并已经应用到企业核心业务。然而&#xff0c;云原生技…...

认识进程 -了解进程调度

前言 本篇通过介绍操作系统OS的重要功能&#xff0c;了解并发并行, 了解操作系统的一项重要功能 “进程管理” , 通过了解进程管理认识进程是操作系统资源分配的基本单位 ,如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章…...

第十届省赛——7外卖店优先级

题目&#xff1a;“饱了么”外卖系统中维护着N 家外卖店&#xff0c;编号1~N。每家外卖店都有一个优先级&#xff0c;初始时(0 时刻) 优先级都为0。每经过1 个时间单位&#xff0c;如果外卖店没有订单&#xff0c;则优先级会减少1&#xff0c;最低减到0&#xff1b;而如果外卖店…...

做自动化测试选择Python还是Java?

今天&#xff0c;我们来聊一聊测试人员想要进阶&#xff0c;想要做自动化测试&#xff0c;甚至测试开发&#xff0c;如何选择编程语言 前言 自动化测试&#xff0c;这几年行业内的热词&#xff0c;也是测试人员进阶的必备技能&#xff0c;更是软件测试未来发展的趋势。特别是…...

C#基础之基础语法(一)

总目录 文章目录总目录前言一、C#简述1 C#是什么&#xff1f;2 .Net平台3. C# 和.Net的关系4. 集成开发环境&#xff08;IDE&#xff09;二、控制台应用程序1. 常用代码2.注意事项三、基础语法1.编写C#代码注意事项2.C#注释2. 变量&标识符&关键字4. 变量&#xff0c;字…...

【JVM篇1】认识JVM,内存区域划分,类加载机制

目录 一、JVM内存区域划分 ①程序计数器(每个线程都有一个) ②栈&#xff1a;保存了局部变量和方法调用的信息(每一个线程都有一个栈) 如果不停地调用方法却没有返回值&#xff0c;会产生什么结果 ③堆(每一个进程都有一个堆&#xff0c;线程共享一个堆) 如何区分一个变量是…...

CHAPTER 5 文件共享 - FTP

文件共享 - FTP1 FTP1.1 传输方式1. ASCII传输方式2. 二进制传输模式3. 两种传输方式的区别1.2 支持的模式1. 主动模式(PORT)2. 被动模式(PASV)3. 如何选择4. 为什么绝大部分互联网应用都是被动模式&#xff1f;1.3 搭建FTP服务器&#xff08;使用vsftpd&#xff09;1. 安装软件…...

【MySQL】将 CSV文件快速导入 MySQL 中

【MySQL】将 CSV文件快速导入 MySQL 中方法一&#xff1a;使用navicat等软件的导入向导如果出现中文乱码方法二&#xff1a;命令行导入&#xff08;LOAD DATA INFILE SQL&#xff09;一般来说&#xff0c;将csv文件导入mysql数据库有两种办法&#xff1a; 使用 navicat、workbe…...