- 博客(218)
- 资源 (24)
- 收藏
- 关注
原创 【FFmpeg】理解 av_packet_from_data 和 av_packet_unref 接口
说法正确?说明不会释放pStream❌ 错误会释放!pStream是外部 buffer,可安全传给❌ 危险除非它是av_malloc分配的“应使用处理外部数据”✅ 正确推荐做法。
2026-02-03 16:42:23
580
原创 【C/C++】strerror、GetLastError 和 errno 的含义和区别?
项目errnostrerror来源C 标准库 / POSIXC 标准库平台跨平台跨平台仅 Windows适用函数C 标准库函数(如fopenmalloc配合errno使用Windows API 函数(如CreateFile类型全局变量(int)函数(转错误码为字符串)函数(返回 DWORD 错误码)线程安全通常是线程局部(现代实现)通常不安全(用替代)线程局部(安全)典型错误码ENOENT(=2),EINVAL(=22)(=2),(=5)标准库看errno,WinAPI 查;
2026-01-30 16:22:41
576
原创 【C/C++】什么是 运行时库?运行时库 /MT 和 /MD 的区别?
选项链接方式是否依赖 VC++ Redist文件大小模块间 CRT 共享适用场景/MT静态链接否较大否(各模块独立)独立部署、小型工具/MD动态链接是较小是(共享 DLL)通用应用、大型项目选择/MT还是/MD应根据你的部署需求、模块架构和维护策略综合考虑。
2026-01-30 15:26:15
397
原创 【OpenCV】CMake 源码生成 VS2017 win32 静态库工程时,如何指定 /MT 和 /MD
场景推荐配置静态库 +/MD(你的需求)静态库 +/MT(默认)不设置(默认 ON)动态库(.dll)(此时默认 OFF,用/MD✅是控制/MTvs/MD的总开关,优先级高于其他变量。问题答案为什么设置了/MD还是/MT?因为默认为ON(MSVC 下)最关键的 CMake 参数是什么?是否需要?不需要,它是冗余的(除非你用非常老的 OpenCV 版本)是否必须升级 CMake?不必须,但 ≥3.15 更规范✅记住:在 OpenCV + MSVC + 静态库场景下,是控制/MTvs/MD的“总闸”。
2026-01-27 16:09:18
723
原创 【C】ANSI 与 UTF-8 相互转换
endif// 将 UTF-8 字符串转换为 ANSI(当前系统默认代码页,如 GBK)// 参数:// utf8 : 输入的 UTF-8 字符串(必须以 '\0' 结尾)// ansi : 输出缓冲区(调用者分配)// outsize : 输出缓冲区大小(字节数,必须 > 0)// 返回值:// 1 = 成功(ansi 包含完整结果,以 '\0' 结尾)// 0 = 失败(参数错误、API 失败、或缓冲区不足)// 将 ANSI 字符串(当前系统默认代码页)转换为 UTF-8。
2026-01-26 13:36:15
415
原创 【VS2017】为什么 devenv 能接受 .vcxproj 作为输入?
💡 举个例子:如果你在 Jenkins 或 GitHub Actions 上只安装了。“devenv 只认 .sln,无法直接接受 .vcxproj 作为输入!虽然可行,但在自动化脚本(如 CI/CD、批处理)中,这句话是错误的,用下面的命令就能编出xxx.dll。Visual Studio 的 IDE(包括。的支持是“向后兼容+便利功能”,而。✅ 所以你的命令能成功生成 DLL,(无 VS IDE),那么。才是“标准构建入口”。
2026-01-23 17:32:38
895
原创 【VS2017】devenv、msbuild、cl 三个编译工具的区别
当你使用.vcxproj时,。下面详细解释为什么,并清晰对比devenvmsbuild和cl的区别与适用场景。
2026-01-23 17:04:59
764
原创 【VS2017】/MT 和 /MD 区别
选项全称含义/MT静态链接多线程版 CRT(如libcmt.lib/MD动态链接多线程版 CRT(使用msvcrt.lib+ 运行时 DLL,如等)/MTd:静态链接调试版 CRT(/MDd:动态链接调试版 CRT(/MT把运行时“打包带走”,/MD依赖系统“共享服务”——选哪个,取决于你是否愿意承担依赖和协作成本。如果你只是写一个独立程序,并且用的是官方 OpenCV,直接改项目为/MT是最省事的方案。
2026-01-23 10:07:19
745
原创 【Windows】 LoadLibraryA(“F:\\svnroot\\mccv.dll“) 返回NULL, GetLastError() 返回 126
❌返回 NULL + GetLastError() = 126✅几乎总是因为:依赖 DLL 缺失 或 架构不匹配请优先使用工具分析mccv.dll的依赖链!如果你能提供mccv.dll的编译环境(如 VS2019?是否静态链接 CRT?是否依赖 OpenCV?),我可以给出更具体的建议。
2026-01-23 09:23:41
848
原创 【Windows】 LoadLibraryA( DllName ) 的 DllName 必须是带绝对路径的库名吗?
❌不是必须用绝对路径;✅但强烈推荐使用绝对路径,以提高可靠性和安全性;🔄 相对路径和仅文件名依赖搜索机制,存在不确定性与安全隐患。
2026-01-23 09:17:15
374
原创 【基础知识】YU12、YV12、NV12、NV21、YUY2、UYVY、YUYV、YVYU、AYUV、I420、IYUV、NV16
类别格式NV12, NV21NV16AYUVI420/YU12/NV12/NV21 是最常用的四种 YUV 4:2:0 格式,掌握它们足以应对 90% 的视频/图像处理场景。如需某格式的C++/Python 解析代码内存布局图或FFmpeg 转换命令,欢迎继续提问!
2026-01-22 17:08:28
710
原创 【基础知识】YU12、I420、IYUV 是同一种格式
名称是否等价推荐使用场景I420✅ 是通用标准(首选)YU12✅ 是Linux / V4L2 系统IYUV✅ 是老旧 Windows 文档💡结论:在 99% 的情况下,YU12 = I420 = IYUV,都是 YUV420 planar(Y+U+V)格式。如需代码示例(如用 Python/C++ 读取 I420 文件并转为 RGB),可继续提问!
2026-01-22 16:44:46
405
原创 【基础知识】ANSI、GB2312、UTF-8、Unicode、wchar_t 的含义和区别
名称类型是否 Unicode?字节长度Windows 角色是否推荐现代开发Unicode字符集标准✅ 是抽象基础✅ 必须理解UTF-8编码方案✅ 是1~4文件/Web 主流✅ 强烈推荐UTF-16编码方案✅ 是2/4Windows 内核内部编码✅ Windows GUI 必用GB2312本地编码❌ 否2旧中文系统❌ 已过时ANSI(Win)本地编码(如 GBK)❌ 否1~2兼容旧 API⚠️ 仅用于兼容wchar_tC/C++ 类型平台相关。
2026-01-22 16:37:42
804
原创 【基础知识】本地编码 和 Unicode 的含义和区别
让我们清晰、准确地澄清几个关键概念:💡 类比理解Unicode 像是“全球统一电话号码簿”(每个字符有唯一号码)。UTF-8/UTF-16 是“拨号规则”(国际长途怎么打、区号怎么加)。GB2312 则像是“1980年代中国本地电话簿”,有自己的编号规则。要把 GB2312 的“电话号码”转成全球统一号码,需要查一本“对照表”。✅ 总结说法正确?说明GB2312 属于 Unicode❌它是独立于 Unicode 的旧编码GB2312 与 UTF
2026-01-22 16:27:19
244
原创 【C/C++】g++ 和 gcc 生成库的符号可见性
方面gcc(C)g++(C++)默认可见性非 static 全局符号 default同左,但有更多隐式符号(vtable, RTTI 等)推荐控制方式同左,但需注意类、模板、异常等复杂情况.so 重要性高极高(ABI 稳定性依赖可见性).a 影响低低如有具体场景(如混合 C/C++、插件系统、跨平台等),可进一步细化策略。
2026-01-20 14:53:47
706
原创 【Windows API】音频 API 对比:wavein/waveout、DirectSound、ASIO、WASAPI
优势与局限优势局限✅ 极其简单易用❌ 延迟极高(100-500ms)✅ 系统自带,无需额外库❌ 不支持多应用同时访问✅ 向后兼容性好❌ 功能非常基础✅ 适合简单录音/播放❌ 无硬件加速适用场景简单的命令行音频工具教学示例程序兼容性要求极高的旧程序现代开发:基本不再使用2. DirectSound设计与定位目标:游戏多媒体音频,取代 Wave API核心:DirectX 多媒体套件的一部分架构演进关键特性实际工作流程
2026-01-09 15:28:06
948
原创 【C++】模板类的声明和定义为啥都放在头文件中?
这是一个很好的C++模板问题!模板类通常需要将声明和定义都放在头文件中,主要原因如下:模板不是普通的代码,而是代码生成器的指令。编译器需要看到完整的定义才能为具体的类型实例化模板:2. 链接器无法解析模板实例当你在另一个.cpp文件中使用时:3. 解决方法方案A:传统方式(推荐)将定义直接放在头文件中:方案B:显式实例化在.cpp文件中显式列出所有需要的类型:方案C:分离但包含(.tpp/.ipp文件)4. C++20的Modules改进C++20引入了Modules,可以更好地处理
2026-01-06 13:27:24
186
原创 【SDL】多线程中,SDL_Init() 接口被两个线程同时调用了,会有啥问题?
绝对不要问题风险等级后果双重初始化高资源泄漏、崩溃竞态条件高未定义行为状态不一致中功能异常引用计数错误中清理问题最佳实践在主线程初始化SDL初始化完成后再创建其他线程使用SDL_InitSubSystem()进行线程安全的子系统管理确保SDL_Quit()也只调用一次。
2025-12-31 16:50:38
429
原创 【X11】XWindowAttributes 结构体分量 int map_state
这个状态是X服务器维护的,反映了窗口在显示层次中的实际状态,对于管理窗口可见性和优化渲染非常重要。
2025-12-23 15:17:30
300
原创 【C++11】std::unique_lock<std::mutex> 和 std::lock_guard<std::mutex>
使用简单的 RAII 锁管理整个作用域都需要锁不需要条件变量性能是关键考虑使用需要配合条件变量需要手动控制锁的时机需要尝试加锁或超时加锁需要转移锁的所有权需要更复杂的锁策略在大多数简单情况下,就足够了,而且性能更好。只有在需要更高级功能时才使用。
2025-11-21 10:33:47
332
原创 【Makefile】libyuv 编译举例
以 libyuv 源码自带Makefile 举例Makefile的推导执行顺序遵循特定的依赖解析机制,首先从默认目标开始,然后根据依赖关系逐级构建。
2025-11-21 10:03:08
364
原创 【Media Foundation】视频采集封装类(一)
要求:设计一个 MF视频采集类,实现 选源,设置采集宽高、采集类型(匹配设备最接近的采集能力),开始采集接口,停止采集接口,每隔5s检测采集设备表是否有变化,一个独立的采集线程。我来为您设计一个基于Media Foundation的MF视频采集类。这个类提供了完整的视频采集功能,可以根据具体需求进一步扩展。
2025-11-19 16:27:30
356
原创 【Media Foundation】设备图像质量属性调节可以跨线程吗?
问题:m_pVideoProcAmp->Get()m_pCameraControl->Get()必须和 MF前的COM初始化在同一线程中使用吗?
2025-11-14 10:45:07
205
原创 【Media Foundation】采集设备的图像质量调节(六)
问题:m_pVideoProcAmp->GetRangem_pCameraControl->GetRange和 m_pVideoProcAmp->Getm_pCameraControl->Get的区别?
2025-11-13 14:50:17
301
原创 【Media Foundation】采集设备的图像质量调节(三)
问题:1. 你说的 IAMVideoProcAmp 是电子调节,是指纯CPU 算法处理图像吗?2. 你说的 IAMCameraControl 是物理硬件控制,是指相机硬件必须支持控制吗?
2025-11-13 14:26:15
290
原创 【Media Foundation】采集设备的图像质量调节(二)
问题:1. m_pVideoProcAmp 和 m_pCameraControl 所有相关操作都必须和 MF 前 COM初始化在同一个线程中吗?2. 这两种方法都能控制所有视频属性吗?3. 这两种方法的区别是啥?
2025-11-13 14:23:06
145
原创 【Media Foundation】采集设备的图像质量调节(一)(如亮度、对比度、饱和度等)
通过视频采集设备的 Media Source 来访问属性控制接口。这种方法可以直接在硬件层面调节视频采集属性,效果实时且性能开销小。
2025-11-13 14:15:33
181
原创 【C/C++】不能在派生类的构造函数初始化列表中直接初始化属于基类的成员变量
操作语法是否允许说明正确方式允许通过调用基类构造函数来初始化基类成员。错误方式不允许不能直接在派生类初始化列表中初始化基类成员。赋值方式在派生类构造函数体内允许(对protected这是赋值,不是初始化。不推荐,效率较低且可能违背设计初衷。让每个类管理自己的成员。这有助于写出清晰、可维护且符合C++对象模型规范的代码。
2025-11-11 09:15:22
404
原创 【C/C++】C++11前后的类成员变量初始化规则的变化
成员类型C++11 前C++11 及以后说明const 成员必须在初始化列表初始化✅ 可以在类内初始化规则变化引用成员必须在初始化列表初始化❌ 必须在初始化列表初始化规则不变没有默认构造的类成员必须在初始化列表初始化❌ 必须在初始化列表初始化规则不变继承的基类必须在初始化列表初始化❌ 必须在初始化列表初始化规则不变普通成员可以在构造函数体内赋值✅ 可以在类内初始化规则变化。
2025-11-10 17:20:18
439
原创 【C/C++】C++11 类的 默认构造函数 “= default” 用法
/ .h 文件private:public:// 声明但不 = default// .cpp 文件// 可能有一些特殊的初始化逻辑不写默认构造函数:编译器自动生成,使用类内初始值 ✅写= default:效果相同,但更明确意图 ✅只有在有其他构造函数时,才需要显式写= default来保留默认构造函数。
2025-11-10 16:54:32
231
原创 【C/C++】C++11 类成员变量的多种初始化方式
声明时初始化更像是提供一个"默认值",如果初始化列表中显式指定了值,就会使用初始化列表中的值。相比于传统方式(在构造函数初始化),类内初始化提供了更简洁直观的语法,减少了重复代码。当同时使用类内成员初始化(声明时初始化)和 构造函数初始化列表时,。C++11支持在类成员变量声明时直接进行初始化,这一特性被称为。
2025-11-10 16:49:15
250
原创 【C/C++】memset 清零初始化 某些结构体导致异常
对于包含C++标准库对象的类或结构体,正确的初始化方法应该是使用构造函数来实现,或者让编译器生成默认的初始化操作。内部同样包含指向数据的指针、容量和大小等信息,清零操作会破坏这些管理信息。会将这些内容全部置零,导致后续对字符串的操作出现未定义行为。内部包含指向字符串数据的指针和长度信息等成员变量,会破坏虚函数表指针,导致对虚函数的调用出现异常。等C++对象内部的内存管理结构。是按字节对内存块进行初始化的函数,它会破坏。:如果结构体包含虚函数,
2025-11-10 16:05:32
186
原创 【工具】Windows上查看 exe 依赖的 dll 的方法
在 Windows 系统中,有多种方法可以查看可执行文件(exe)依赖的 DLL 文件。
2025-11-06 10:44:18
1223
原创 【Windows】Media Foundation 接口调用线程选择 MTA or STA?
线程类型推荐模式说明高性能处理MTA解码、编码、视频处理源读取器MTAIMFSourceReader 相关操作UI 集成STA与窗口消息循环集成简单对象操作均可媒体类型、样本、属性等。
2025-10-29 10:03:03
387
GitlHEVCAnalyzer_win32_v1.5.1(H265码流分析工具)
2018-08-16
MediaInfo (音视频文件检测)
2018-08-16
Procexp工具(含32位和64位)
2018-08-06
Windows Media ASF View 9 Series 1.0
2018-11-07
CoolEditPro破解版
2018-08-06
Depends工具
2018-08-06
yuvplayer.exe (YUV序列播放器)
2018-08-16
clumsy 0.2 网络调试工具(含32位和64位)
2018-08-06
C++ and the Perils of Double Checked Locking.zip
2021-07-22
Windows程序设计(第五版).pdf (高清电子版+有目录)
2018-08-16
DXVA Checker v4.0.0(显卡硬件加速检测工具)
2018-08-16
发包工具(内有使用文档)
2018-10-26
《Windows核心编程(第5版)》pdf(高清电子版+有目录)
2018-08-16
《提高C++性能的编程技术(译本)》.pdf (译:左飞)
2018-10-26
C++设计模式(经典版).pdf
2018-10-15
Intel_Media_SDK_2017_R1.msi
2018-08-16
CPU-Z(含32位和64位)
2018-08-06
Visual_Assist_X_10.9.2089_Crack(完美破解版)
2018-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅