自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(413)
  • 收藏
  • 关注

原创 Windows 上编译 mebedtls 的鸿蒙库

mebedtls 地址:https://github.com/Mbed-TLS/mbedtls准备工作:clone mebedtls 仓库到本地(tag: mbedtls-2.26.0)鸿蒙工具链(SDK version: v5.0.5)编译文件修改:对 CMakeLists.txt 进行修改,主要是关闭了以下几个选项ENABLE_PROGRAMSMBEDTLS_FATAL_...

2025-02-21 11:17:00 495

原创 Windows 下搭建 googletest 测试框架(C/C++)

引用该篇文章:https://www.cnblogs.com/augustine0654/p/17156412.html实际复现时发现了一些问题,故记录下:1. 使用 gcc 编译 exe 时,mian.c 文件位置是在 calculate 里命令: gcc ./src/calculate/main.c ./src/calculate/add.c -I ./src/calcula...

2025-02-08 15:17:00 477

原创 process.dlopen 错误处理

前提:使用 cmake-js 编译 native 的 node 包,在使用 node test.js 运行 js 文件时会报错node:internal/modules/cjs/loader:1340 return process.dlopen(module, path.toNamespacedPath(filename)); ^Error: The...

2025-01-23 19:15:00 198

原创 博客搭建技术方案

博客类型:静态博客,易于部署到三方服务器上,占用资源少,不易被黑框架类型:hugo(基于 Go,熟悉 C++ 比较容易上手 Go)博客内容:自定义主题,排版整齐,文章归纳,后续考虑加上评论插件编译工具:cursor代码托管:github辅助工具:将本地文档自动上传到 git 或者三方服务器托管服务器:cloudflare pages相关:类似于 hexo,hugo,atro 这...

2025-01-07 14:28:00 257

原创 git rest --hard

git push 时如果发现带有以前的 commit,且 git pull 和 rebase 都尝试过也无效可以使用 git reset --hard origin/master 来定位到最新的 commit,并重新提交变动的代码git reset --hard origin/master...

2025-01-02 17:27:00 254

原创 2024年的年终小结

又一年过去了,加上十二月份也没写一篇技术分享,故就用一个年终小结来结束这一年吧翻了下工作的聊天记录上半年:1. 主要是维护和开发当前的项目,以及解决各种疑难杂症,学习了不少知识,虽然现在也忘记了差不多,还好一些重要的都记录到博客了2. 我负责的项目优先级不高,所以迭代周期比较慢,今年才更新了四个版本。。。所以就上手学习了公司的播放器项目,播放器项目比较复杂,啃起来尤其费劲,故先学习了部分...

2024-12-31 18:40:00 349

原创 使用 vscode 调试 nodejs 代码

继前一篇:使用 cmake.js 在 Windows 上编译 js 代码我们已经能在 vscode 上成功的编译出 js 代码,那我们该如何断点调试 js 代码以及 js 引用的 C 库源码呢首先要先以 Debug 模式编译 js 代码cmake-js cleancmake-js compile -D找到 debug 生成的 pdb 文件,这个很重要,关乎到能否 debug 到 ...

2024-11-21 16:08:00 665

原创 Go 项目的配置流程

电脑配置:Windows 10 编译工具:vscodeGo:https://go.dev/dl/ (选择 Windows 安装包)步骤:用 vscode 打开项目文件夹,输入 go env,查看环境配置PS D:\Project> go envset GO111MODULE=set GOARCH=amd64set GOBIN=set GOCACHE=C:\Users\App...

2024-11-20 19:18:00 446

原创 git 同步上游仓库到远端仓库

首先知道什么是本地仓库,远端仓库,上游仓库本地仓库:你从远端仓库克隆到本地 PC 上的仓库远端仓库:从上游仓库 fork 过来的仓库,可以理解为自己的仓库上游仓库:公司的仓库,所有权不在于你当远端仓库慢于上游仓库时,如何同步上游仓库到远端仓库呢?git remote add upstream 上游仓库名称.git# 查看分支git remote -v# 从源分支拉取最新代码...

2024-11-13 15:36:00 471 1

原创 github 上将 stable 合并到 master 分支步骤

本地仓库分支:origin远端仓库分支:upstream切到非 master 分支上,比如 dev# 本地操作git branch -D mastergit fetch upstream master::mastergit checkout master# 这步是拉取远端 stable 到 master 上,可能会出错误# fatal: Not possible to fast...

2024-10-11 12:25:00 378

原创 使用 cmake.js 在 Windows 上调试 js 代码

前提:因要给鸿蒙手机提供打包好的 C++ 库,鸿蒙系统的应用层是 js 写的,底层是 C++ 写的,故为提高鸿蒙开发效率,需要将其他端的 C++ 库通过 napi 打包成 能 node.js 下运行的动态库但是平时多用 Windows 开发,所以要在 Windows 本地调试 js 代码,查看接口是否正常,如果正常就可以通过鸿蒙工具链打包成 arm64 的动态库了而 Windows 是 x8...

2024-09-26 20:25:00 688

原创 git 清除二进制文件的 changes 状态

问题:某个分支上修改了二进制文件,导致 changes 一直存在,切换到主分支也仍然存在,点击 Discard 也没用使用 git reset --hard 还原到初始状态,也不行,不过输出结果会给出错误信息Encountered 7 file(s) that should have been pointers, but weren't:解决方法:根据这个线索,搜索了相关案例(其...

2024-09-26 19:03:00 552

原创 MINGW 安装 Clang

MINGW 中使用 clang 突然显示命令找不到,重装了好几遍 clang 还是不行,最后使用下面的命令解决了pacman -S make python mingw-w64-x86_64-cmake mingw-w64-x86_64-clang mingw-w64-x86_64-ccache mingw-w64-x86_64-libuv mingw-w64-x86_64-gmp git u...

2024-09-26 16:51:00 187

原创 Mac 安装一系列工具文章汇总

安装 cmake安装 vscode=>终端在屏幕左上角的菜单栏中选择 terminal安装 brew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"  ...

2024-09-24 16:00:00 331

原创 C++ 多线程知识汇总

https://zhuanlan.zhihu.com/p/194198073(防链接失效)程序使用并发的原因有两种:为了关注点分离(程序中不同的功能,使用不同的线程去执行),当为了分离关注点而使用多线程时,设计线程的数量的依据,不再是依赖于 CPU 中的可用内核的数量,而是依据概念上的设计(依据功能的划分);为了提高性能, 此时线程数量可以依据CPU的逻辑核心数目,这样可以使得每个线程...

2024-09-20 19:06:00 459

原创 网络准入小助手初始化失败原因

公司提供的网络准入小助手在输入服务器地址和端口号后,初始化过程一直提示失败在排除外部因素(服务器是正常的),这种问题一般出在用户电脑上,首先检查是否启动了代理服务器,发现没有启动关闭了防火墙和防御软件,依然初始化小助手失败最终发现是系统环境变量加了 HTTP_PROXY 和 HTTPS_PROXY,导致访问到代理地址上了,最终无法初始化失败删除了这两个 PROXY 变量,重启电脑后,联网...

2024-08-27 16:11:00 223

原创 DevEco Studio 调试三方库源码

有相关的官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-app-debugging-26-V5实操:将编译好的三方库文件和符号文件整理好在工程中添加对库文件的使用,一般是将库文件放到 libs/arm64-v8a 下点击顶栏的选项,Run->Edit Configuration...

2024-08-21 12:07:00 397

原创 编译 wolfssl 库

wolfssl github:https://github.com/wolfSSL/wolfssl编译 .lib 或者 .dllwolfssl 很好的提供了 win32 的工程=》sln 文件这样就不用折腾 CMakeLists 文件了,使用 Visual Studio 打开 sln 文件后,设置好 Static 编译库即可,开箱即用编译 .a 文件如果需要编译 ....

2024-08-20 17:54:00 473

原创 编译 onigmo 库

onigmo github:https://github.com/k-takata/Onigmo测试环境:Windows我编译库时习惯于在 vs code 下 git clone 文件后,再执行相应的编译操作而 vs code 提供的终端一般是 git bash 和 powershell在编译 windows 下运行的库=》.lib 和 .dll不能直接在 powershell 和...

2024-08-20 16:31:00 340

原创 cmake.js 的安装

安装 cmake-js 时遇到 npm ERR! code EUNSUPPORTEDPROXY 错误这种一般是代理问题,需要手动设置代理地址,如下:npm config set http-proxy [url][port] #代理地址+端口npm config set proxy [url][port]查看 cmake.js 的版本号npx cmake-js --versio...

2024-08-08 17:52:00 368

原创 近期在看

1. C++ Primer2. 深入理解 FFmpeg3. 鸿蒙 sdk 开发

2024-07-30 16:24:00 379

原创 Mac 命令行记录

1. 查看 .so 符号表objdump -T libxxx.so2. 查看文件大小ls -lf libxxx.so3. 查看 .a 架构信息lipo -detailed_info libxxx.a4.

2024-07-30 14:31:00 443

原创 FFmpeg 重打包

解封装涉及到很多接口的调用AVFormatContext: 初始化格式上下文,由 avfomat_alloc_output_context2(&oc, NULL, NULL, filename) 赋值作用:用于封装和解封装的核心数据结构是 AVFormatContext,它包含所有关于正在读取或写入的文件的信息。与大多数 libavformat 的结构一样,它的大小不是公共 ABI ...

2024-06-14 12:24:00 713

原创 HLS、HTTP+FLV、DASH

HLS、HTTP+FLV 和 DASH 是三种常见的流媒体传输协议,它们在技术实现、使用场景和优缺点方面都有显著的区别。以下是对它们的关系和区别的详细解释,以及当前最流行的流媒体传输协议的讨论。HLS(HTTP Live Streaming)开发者:由 Apple 开发。工作原理:将视频切片成小的 TS 文件,并生成一个 m3u8 播放列表文件。播放器下载 m3u8 文件...

2024-05-31 15:16:00 892

原创 C++ 的 mutable 引出的一系列思考

阅读多线程实战第六章第二节时,看到 mutable 关键词的使用,突然忘记它的含义=>https://github.com/xiaoweiChen/CPP-Concurrency-In-Action-2ed-2019/blob/master/content/chapter6/6.2-chinese.md进而引申到 mutable 的使用=>C++ 的 mutable 关...

2024-05-23 15:31:00 393

原创 git push

一天一个小“姿势”问题:如何在远端仓库中添加特定的分支答:git push upstream v0.1.0解释:upstream 是远端仓库的地址,v0.1.0 是当前分支的名字,会同步到远端分支(这边是新建一个远端分支)...

2024-05-22 19:42:00 398

原创 Windows 上 sentry-native v0.7.2 版本的使用

在我建议 sentry-native 社区添加 content: gzip 功能,并提交了一个 PR 帮助他们完成后,终于在 v0.7.2 中添加了该功能https://github.com/getsentry/sentry-native/releases/tag/0.7.2不过实际中使用与旧版本存在一些差距,主要在于 zlib 库的引用,所以记录下差异的地方和解决的方法sentry...

2024-05-22 19:30:00 408

原创 深入理解 FFmpeg 书籍笔记

知识点太多,目前只记录遇到的错误1. 在 Ubuntu 22.04 64位上编译 FFmpeg-0.6.3 时,使用 ./configure 配置时遇到如下错误ffserver.c: In function ‘rtsp_cmd_describe’: ffserver.c:2987:5: error: implicit declaration of function‘ff_url_sp...

2024-04-25 18:43:00 559

原创 electron 开发

教程:https://www.electronjs.org/zh/docs/latest/tutorial/quick-start系统:Windows 10工具: PowerShell文件目录:index.html main.js package.json 和 preload.js 是手动添加的,其余是编译生成的index.html<!DOCTYPE html>&lt...

2024-03-29 18:59:00 294

原创 视频编码学习

1. H.264 和 H.265 区别参考:https://winddoing.github.io/post/4a8fdf27.html

2024-03-14 11:44:00 168

原创 git merge 问题

远端分支更新后,本地需要使用 git pull 或者 git fetch 获取更新有时候会出现拉取后,本地分支新出现一个 merge commit,这个 commit 会干扰到项目 commit 的历史线所以我们一般在 git fetch 或者 git pull 后再使用 git reset --hard xxxx 来同步上下游的 commit 历史线(xxx 的上游最新的 commit 的...

2024-03-05 16:01:00 375

原创 IDA 反汇编 explorer

之前写过一篇关于 IDA 在无 dmp 文件下如何定位到崩溃点的文章,由于其中涉及到公司项目,就仅限自己看了正好今天看到一篇关于火绒软件误杀 explorer 的文章,并且有相关的复现过程文章已经概述的很清楚,不过缺少软件的调试步骤,借此机会补充一下该调试过程一共使用两个软件,IDA 和 010 Editor,以及调试文件,explorer.exe 和 pdb 文件,这两个文件可以从上面链...

2024-02-23 12:21:00 415

原创 使用 Visual Studio 断点调试 DLL

继上文说到使用 IDA 和 WinDbg 调试无 dmp 文件那么在有源码的情况下可以直接断点调试 DLL,目的是查看 DLL 内部的函数调用场景:程序执行到某个 DLL 时突然崩溃,先确定 Debug 生成的 DLL 在程序中运行是否也会有闪退如果有,则适用于 VS 断点调试操作步骤:在 Debug 下生成一个对应的 DLL注意:必须是 Debug 生成的 DLL,不然没法断点...

2024-02-19 12:12:00 1013 2

原创 Detours 的使用

Detours 是一个用于在 ARM, ARM64, X86, X64 和 IA64 机器上拦截二进制函数的库。 Detours 最常用来拦截应用程序中的 win32 api 调用,比如添加调试工具。 拦截代码在运行时动态应用。Detours 将目标函数的前几个指令替换为无条件跳转到用户提供的 detour 函数它与WriteProcessMemory 有所不同区别:WritePro...

2024-02-19 11:15:00 520

原创 如何编写一个 PowerShell 脚本

PowerShell 脚本的后缀是 .ps1前提:ps1 脚本可以帮忙我们快速修改文件内容,还不需要调用文件的底层 api,方便快捷在编写 CMakeLists 时发现,项目不能够很好的使用 vcpkg tool chain,哪怕是在命令行中指定 vcpkg.cmake如果只是简单的项目,vcpkg tool chain 可以正常工作,但是在稍微复杂一些的项目中,比如依赖的 vcpkg ...

2024-01-16 18:33:00 1238

原创 2023 年终小结

2023 结束了,写几句想说的话,也算是对这一年成长的小结1. 千里之行,始于足下,再难的任务也可以解析成很多小的需求,再逐个完成2. 保持积极向上的心态,遇事不着急,先分析再吸取他人的意见,最终给出中肯的解决方法3. 拥抱新的变化,要多读书多回顾,多记录学习到的知识,光靠脑子记不太行4. 尊重每一个人,你尊重他,他也会尊重你5. 家人的身体健康是最大的财富最后写些对自己的说的话,...

2024-01-02 15:34:00 395

原创 调试工具汇总

1.dependency walker用于查看 dll 之间的依赖关系2.EXE Explorer查看 exe 或者 dll 的 PE 信息可以查看时间戳,看编译时间是否正确3. hash.exe查看文件的 md5 是否一致可以用来检查文件是否完整4.clumsy 0.2clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况...

2023-12-25 12:02:00 468

原创 如何设置 vcpkg 依赖特定编译器

最近项目要部署到 gitlab-ci 上,所以远程机器上也要安装好编译环境在相关的环境安装完后,发现编译项目时提示找不到三方库的符号文件看到这个错误的第一反应就是依赖库的版本不对,因为远程机器上不仅安装了 vs2019,还安装了 vs2022这个可能会导致 vcpkg 编译时选择了 vs2022 的 MSVC,但是我们在 cmake 时选择的是 vs2019这样就导致了 jsoncpp...

2023-12-18 11:20:00 1311

原创 C++ 快速加载 Dll 里的 API

最近项目里要重新编写程序加载器,也就是编译出一个可执行文件,在 Windows 上是 .exe为什么要程序加载器?个人理解是,可执行文件大小最好是越小越好,功能都可以由 dll 文件执行而程序加载器里最重要的是两个 win32 函数,分别是 LoadLibrary 和 GetProcAddress前者是加载 dll 并返回 instance 句柄,后者是从 instance 里提取所需的...

2023-12-14 11:46:00 491

原创 Windows 项目的 CMakeLists 编写

前言:项目一直是以 .sln 解决方案打开和处理的,上传到 github 也是需要将 sln 文件包括到项目里,不太优雅(虽然方便),毕竟现在开源项目基本都是使用 CMake 做跨平台编译因为项目是以 Windows 编译为主,就只写了 CMakeLists 中的 Windows 的部分,后续如果要跨平台的话,可以在此基础上拓展。写这篇文章的主要目的是积累和分享学习经验,在寻找相关 vs ...

2023-12-05 11:05:00 484

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除