tfs备份问题
前言
在添加TFS备份任务时,我遇到了如下几个问题:
TF401009:Azure DevOps 服务账户 NT AUTHORITY\LOCAL SERVICE 无法访问网络共享。请更改为可访问备份路径的账户。
SQL实例“XXXXX”上的数据库“XXXXXX”正在使用简单恢复模式,该模式不能用于拆功能键所有 Azure DevOps 数据库的事务一致性备份。所有Azure DevOps 数据库都必须使用完整恢复模式来创建备份计划。
TF401002: SQL Server 数据库引擎未能将数据库备份保存到路径 \xxxxx\source_backup。 请向 SQL 服务帐户授予对该文件夹的读/写访问权限。
TF401009
该问题可以通过切换 Azure De...
玩转CMake
前言
今日需要将项目迁移到Linux上,那么首先要做的就是创建Linux上的项目啦~
这就要清楚大名鼎鼎的CMake。
由于网上的教程都是简单的小型项目示例,所以参考起来总是缺点东西。
我这里就用实际大型项目简化出来的项目作为,示例吧~
安装
太简单了,省略。
CMake说明
简介
在项目文件夹内部,CMake的配置是通过CMakeLists.txt进行配置的。
子项目的配置通常是通过文件夹层级来维护的,这就意味着子文件夹中也需要有自己的CMakeLists.txt文件。
为了方便描述,下文件假设当前的软件叫RX,拥有如下3个项目:
System 静态链接库,产生lib。
Interface 动态链接库,依赖System,产生.dll和.lib。
Main ...
Windows 和 Linux 交叉编译
前言
通过CMake设置好项目后,设置编译工具链。
在Windows上生成Linux项目的可执行文件或库,需要使用交叉编译工具链。以下是几种常见的方法和工具,可以帮助你在Windows上进行Linux项目的编译:
使用MSYS2进行交叉编译
MSYS2是一个基于MinGW-w64的工具,提供了一个类Unix环境和完整的交叉编译工具链,支持在Windows上编译Linux项目。
步骤
安装MSYS2:
从MSYS2官网下载安装包并安装。
安装完成后,启动MSYS2 Shell。
更新MSYS2:
bash
复制
pacman -Syu
安装交叉编译工具链:
安装MinGW-w64工具链:
bash
复制
pacman -S mingw-w64-x86_64-toolchain...
使用 WSL 安装 KUbuntu
前言
手头的工作是需要做一下linux移植工作,突然想到以前总是用虚拟机安装Linux,从来没有尝试过WSL。
那就着手试试吧!
安装 wsl
我这里简单写了,一般也可以顺利的安装。
详细的过程,可以参考文章WSL2安装和基本命令
先安装 wsl 工具
命令行中执行以下命令
wsl --install
安装后重启系统。
安装子系统
子系统有两种方式安装
命令行
# 查看可用linux版本
wsl --list --online
# 安装指定的linux版本
wsl --install -d <DistroName>
商店安装
在 Windows Store 中,选择子系统安装。
注意
必须启用以下Windows功能
Hyper-V
Vir...
玩转kdevelop
前言
安装
Windows版本
能安装,但是缺少文件Qt6Core5Compat.dll,复制官方较新的Qt6.8.1中的对应文件到程序目录中,可以正常启动。
但是在创建项目及打开项目时会死机。
Linux版本
使用AppStore安装
呃安装失败
使用命令行安装
执行以下命令:
sudo apt-get install kdevelop
安装后,直接执行kdevelop即可启动。
注意1
如果启动后出现如下提示信息:
kdevelop error:Could not load project management plugin KDevCMakeManager
说明未安装CMake,执行以下命令安装:
sudo apt-get install cmake
注意...
C++模板嵌套问题
前言
在编译一个项目的代码时,发生了编译错误error C3878,简化的代码如下:
template<typename T>
void Test()
{
std::list<T*>::iterator t;
}
问题分析
上面的简化代码,看起来是没有问题的,即使用AI分析也不会有错误。
实际上上面这段代码在VC140及更早版本中是没问题的。
但是后续版本中,编译要求更严格了。
在VC141、VC142VC下编译,会得到两条错误,如下:
error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
error C7510: “iterator”: 类型 从属名称的使用必须以“typename”为前缀
在VC143下编译,错误信...
C++中静态变量的初始化与销毁
前言
以下为规律总结,并未深入验证,暂时仅作参考。
初始化时机
静态变量的初始化通常是在使用到的时候进行的。
而这个初始化过程,有时候并不是如大家所想象的那么顺利。
假设存在类A的静态对象实例A,在其构造函数中使用类B的静态成员B进行初始化。会因为B并未先初始化而崩溃。
所以避免让静态对象的初始化依赖其他静态成员。
销毁时机
静态变量的销毁通常是随机的,可能会导致一些随机出现的错误。
假设存在类A的静态对象实例A,在其析构函数中调用了类B的静态成员B的接口,那么有可能会出现B已经被析构了,进而导致A的函数调用无效。
所以应避免在静态对象的析构函数中,调用其他静态对象的接口。
共计 33 篇文章,5 页。