随笔分类 -  C++

有关C++中的常见问题
摘要:前提: napi_call_threadsafe_function 一般是在处理回调事件时才使用,在 native 中将回调事件传递给 JS 中,由 JS 根据这些回调事件进行后续的动作(音频的播放、暂停,UI 的显示场景等等) 这里的 native 一般是指 C/C++ 层的回调,通常该回调会在自 阅读全文
posted @ 2025-06-05 11:53 strive-sun 阅读(320) 评论(0) 推荐(0)
摘要:场景:使用 cmakejs 运行 js 代码时,出现了闪退问题 分析:需要加载相关 pdb 文件,如何使用 vscode 调试 js 代码,可以参考: 使用 vscode 调试 nodejs 代码 从弹出上后,触发了 abort 导致运行中断,结合控制台给出的信息 D:\a\_work\1\s\sr 阅读全文
posted @ 2025-05-19 20:22 strive-sun 阅读(67) 评论(0) 推荐(0)
摘要:概要 既上次出现 Error: The specified module could not be found. 问题之后,又出现了新的问题 process.dlopen 错误处理 运行 js 文件时会出现 node:internal/modules/cjs/loader:1340 return p 阅读全文
posted @ 2025-04-29 19:07 strive-sun 阅读(113) 评论(0) 推荐(0)
摘要:为什么要存储函数的指针的地址,直接存储函数的地址不可以吗 第一:dlsym 返回的是 void*,一般在取函数指针时会保留函数的类型,如果直接存储函数的地址会丢失掉函数类型 // 使用函数指针地址可以保留原始类型信息 int (*func_ptr)(int, int); void** func_pt 阅读全文
posted @ 2025-04-27 18:25 strive-sun 阅读(101) 评论(0) 推荐(0)
摘要:在编程中,二进制数据和字符串数组是不同类型的数据结构,它们有不同的用途和表示方式。 二进制数据: 表示方式:通常是以字节序列(bytes)的形式存在,比如说,文件内容、图像数据、网络数据包等。 用途:用于处理非文本数据,需要精确控制数据的格式和内容,比如读写文件、图像处理、网络编程等。 操作:在许多 阅读全文
posted @ 2025-03-19 15:59 strive-sun 阅读(49) 评论(0) 推荐(0)
摘要:引用该篇文章: https://www.cnblogs.com/augustine0654/p/17156412.html 实际复现时发现了一些问题,故记录下: 1. 使用 gcc 编译 exe 时,mian.c 文件位置是在 calculate 里 命令: gcc ./src/calculate/ 阅读全文
posted @ 2025-02-08 15:17 strive-sun 阅读(268) 评论(0) 推荐(0)
摘要:又一年过去了,加上十二月份也没写一篇技术分享,故就用一个年终小结来结束这一年吧 翻了下工作的聊天记录 上半年: 1. 主要是维护和开发当前的项目,以及解决各种疑难杂症,学习了不少知识,虽然现在也忘记了差不多,还好一些重要的都记录到博客了 2. 我负责的项目优先级不高,所以迭代周期比较慢,今年才更新了 阅读全文
posted @ 2024-12-31 18:40 strive-sun 阅读(32) 评论(0) 推荐(0)
摘要:继前一篇:使用 cmake.js 在 Windows 上编译 js 代码 我们已经能在 vscode 上成功的编译出 js 代码,那我们该如何断点调试 js 代码以及 js 引用的 C 库源码呢 首先要先以 Debug 模式编译 js 代码 cmake-js clean cmake-js compi 阅读全文
posted @ 2024-11-21 16:08 strive-sun 阅读(726) 评论(0) 推荐(0)
摘要:https://zhuanlan.zhihu.com/p/194198073 (防链接失效) 程序使用并发的原因有两种: 为了关注点分离(程序中不同的功能,使用不同的线程去执行),当为了分离关注点而使用多线程时,设计线程的数量的依据,不再是依赖于 CPU 中的可用内核的数量,而是依据概念上的设计(依 阅读全文
posted @ 2024-09-20 19:06 strive-sun 阅读(85) 评论(0) 推荐(0)
摘要:wolfssl github: https://github.com/wolfSSL/wolfssl 编译 .lib 或者 .dll wolfssl 很好的提供了 win32 的工程=》sln 文件 这样就不用折腾 CMakeLists 文件了,使用 Visual Studio 打开 sln 文件后 阅读全文
posted @ 2024-08-20 17:54 strive-sun 阅读(639) 评论(0) 推荐(0)
摘要:阅读多线程实战第六章第二节时,看到 mutable 关键词的使用,突然忘记它的含义 => https://github.com/xiaoweiChen/CPP-Concurrency-In-Action-2ed-2019/blob/master/content/chapter6/6.2-chines 阅读全文
posted @ 2024-05-23 15:30 strive-sun 阅读(25) 评论(0) 推荐(0)
摘要:在我建议 sentry-native 社区添加 content: gzip 功能,并提交了一个 PR 帮助他们完成后,终于在 v0.7.2 中添加了该功能 https://github.com/getsentry/sentry-native/releases/tag/0.7.2 不过实际中使用与旧版 阅读全文
posted @ 2024-05-22 19:30 strive-sun 阅读(221) 评论(0) 推荐(0)
摘要:继上文说到使用 IDA 和 WinDbg 调试无 dmp 文件 那么在有源码的情况下可以直接断点调试 DLL,目的是查看 DLL 内部的函数调用 场景: 程序执行到某个 DLL 时突然崩溃,先确定 Debug 生成的 DLL 在程序中运行是否也会有闪退 如果有,则适用于 VS 断点调试 操作步骤: 阅读全文
posted @ 2024-02-19 12:11 strive-sun 阅读(948) 评论(0) 推荐(0)
摘要:Detours 是一个用于在 ARM, ARM64, X86, X64 和 IA64 机器上拦截二进制函数的库。 Detours 最常用来拦截应用程序中的 win32 api 调用,比如添加调试工具。 拦截代码在运行时动态应用。 Detours 将目标函数的前几个指令替换为无条件跳转到用户提供的 d 阅读全文
posted @ 2024-02-19 11:15 strive-sun 阅读(842) 评论(0) 推荐(0)
摘要:1. dependency walker 用于查看 dll 之间的依赖关系 2. EXE Explorer 查看 exe 或者 dll 的 PE 信息 可以查看时间戳,看编译时间是否正确 3. hash.exe 查看文件的 md5 是否一致 可以用来检查文件是否完整 4. clumsy 0.2 cl 阅读全文
posted @ 2023-12-25 12:02 strive-sun 阅读(160) 评论(0) 推荐(0)
摘要:最近项目里要重新编写程序加载器,也就是编译出一个可执行文件,在 Windows 上是 .exe 为什么要程序加载器? 个人理解是,可执行文件大小最好是越小越好,功能都可以由 dll 文件执行 而程序加载器里最重要的是两个 win32 函数,分别是 LoadLibrary 和 GetProcAddre 阅读全文
posted @ 2023-12-14 11:45 strive-sun 阅读(92) 评论(0) 推荐(0)
摘要:Dll 在需要暴露接口的头文件里添加 dllexport 声明,比如, #define DllExport __declspec( dllexport ) class DllExport C { int i; virtual int func( void ) { return 1; } }; 注意, 阅读全文
posted @ 2023-11-08 16:14 strive-sun 阅读(231) 评论(0) 推荐(0)
摘要:最近项目上要使用 CMakeLists 管理,由于 Windows 版本有依赖到 vcpkg 提供的库,所以需要使用 vcpkg manifest 来统一设置库的版本,方便后续维护 推荐一个文章,介绍的可以说是非常全面了 VCPKG 特性 - Versioning 不过里面也有一些过时的特性,我在后 阅读全文
posted @ 2023-10-13 19:38 strive-sun 阅读(1310) 评论(0) 推荐(2)
摘要:真复杂啊 安装 ffmpeg 库有两种途径,一种是自己下载源码再去编译,另一种是使用 vcpkg 自动安装 一般情况下,第二种是最简单方便的,但是如果你需要使用 ffmpeg 的特定历史版本,那就有点困难了 下面记录下我遇到的坑, 借助这篇文章,我打算使用 vcpkg 切换到 ffmpeg 的历史提 阅读全文
posted @ 2023-09-19 15:46 strive-sun 阅读(2492) 评论(0) 推荐(1)
摘要:在 Winodws 上编译通常会用到这两种工具链 MinGW(Minimalist GNU for Windows) 通常用于跨平台开发,可以编译出在 Windows 系统上运行的 .exe 程序 MSVC(Microsoft Visual C++) 是专属于 Windows 软件开发,不能跨平台 阅读全文
posted @ 2023-09-15 14:53 strive-sun 阅读(2690) 评论(2) 推荐(0)