VS2019编译Ceres库的ABI对齐实战指南
简介本资源是为 Visual Studio 2019 用户定制的 Ceres 求解器预编译二进制包面向计算机视觉、SLAM、优化建模等领域的中高级开发者与科研人员解决在 Windows 平台手动编译 Ceres 依赖繁杂、环境配置易出错的痛点。压缩包共 432 个文件含 40 个动态链接库dll、35 个静态库lib及大量头文件h覆盖 Debug 与 Release 双模式核心组件包括 Cholesky、SparseQR、Eigen、CholmodSupport、SuiteSparse 相关模块及 LAPACK/GFortran 运行时依赖可直接集成至 VS2019 工程实现快速调用。资源大小仅 17.35MB结构精简、即下即用避免耗时编译与第三方库版本冲突。目前已有 824 人学习下载配套博文提供详细配置路径与常见问题说明特别适合希望聚焦算法验证而非底层构建的工程实践者。1. VS2019编译好的Ceres库lib/dll为什么你花三天配不上的环境其实只差一个“ABI对齐”动作你不是没试过——下载Ceres官方源码、用CMake生成VS2019工程、反复切换Release/Debug、x64/Win32、MT/MD运行时最后链接时报LNK2001: unresolved external symbol ceres::Solver::Solve或者运行时弹窗找不到VCRUNTIME140.dll更玄学的是别人发来的.lib.dll在你机器上能编译过一跑就0xC000007B架构不匹配或0xC0000135缺失运行时。这不是你手残而是VS2019的Ceres二进制分发存在三重隐性门槛编译器版本锁死MSVC 142、运行时链路绑定/MD vs /MT、CPU指令集默认启用AVX2是否开启。本文不讲CMakeLists怎么写只给你一套可复现的、带校验逻辑的二进制交付方案从VS2019原生编译出可直接拖进自己项目的lib/dll包附带dumpbin /dependents验证清单、Dependency Walker级依赖图谱、以及ceres::Problem构造即崩溃的3个真实排查路径。适合正在用OpenCVSFM做三维重建、用g2o做SLAM后端、或用Eigenceres解非线性最小二乘的C工程师——你不需要懂Ceres源码但必须让它的DLL在你的exe里安静加载。2. 用VS2019原生编译Ceres绕开CMake的“黑匣子”直控MT/MD、AVX、运行时版本Ceres官方推荐用CMake生成VS工程但实际落地时CMakeLists.txt里set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded$$CONFIG:Debug:Debug)这类写法在VS2019 GUI里根本不可见导致你导出的.lib和.dll运行时链接方式与主工程不一致——这是90%链接失败的根源。我们放弃CMake中间层用VS2019原生工程直接编译全程可控。2.1 下载源码并预处理删掉所有第三方自动下载逻辑Ceres依赖glog、gflags、Eigen、SuiteSparse等官方CMake会自动fetch但网络不稳定时会卡在git submodule update且下载版本不可控。正确做法是手动下载确定版本的依赖包# 在D:\ceres\third_party\下手动创建目录结构 D:\ceres\ ├── third_party\ │ ├── glog-0.6.0\ # 官网下载zip解压至此 │ ├── gflags-2.2.2\ # 注意必须2.2.2新版gflags的API有break change │ ├── eigen-3.4.0\ # Ceres 2.2要求Eigen ≥ 3.3但3.4.0最稳 │ └── suitesparse-5.10.1\ # 仅需AMD、CAMD、COLAMD、SuiteSparse_config提示不要用git clone --recursiveCeres的submodule指向的glog/gflags版本常与VS2019不兼容。手动下载对应tag的release zip包解压后删掉.git目录避免CMake误判为git repo触发自动更新。2.2 创建空VS2019静态库工程强制统一运行时为/MD新建Win32 Static Library项目非CMake名称ceres_static关键配置如下配置项值说明平台工具集Visual Studio 2019 (v142)必须显式指定不能选Inherit from parent or project defaultsC语言标准ISO C17 Standard (/std:c17)Ceres 2.2要求C11以上17最稳妥运行时库Multi-threaded DLL (/MD)⚠️核心主工程若用/MD这里必须一致若主工程用/MT则此处改Multi-threaded (/MT)但/MT会导致glog无法静态链接强烈建议全项目统一/MD代码生成 → 启用增强指令集Advanced Vector Extensions 2 (/arch:AVX2)若目标机器支持AVX2i5-4xxx及以上开启可提速30%否则选Not Set预处理器定义GLOG_NO_ABBREVIATED_SEVERITIES;CERES_NO_ACCELERATION关闭glog缩写日志禁用Ceres内部加速避免与Eigen BLAS冲突注意/MD意味着你的exe和ceres.lib都动态链接vcruntime140.dll、msvcp140.dll这些DLL随VS2019 Redistributable安装部署时必须确保目标机装了vc_redist.x64.exe2019版。若要免Redist必须全项目切/MT但Ceres官方不保证/MT下SuiteSparse的稳定性慎用。2.3 手动添加源码文件跳过CMake自动生成的头文件路径陷阱Ceres源码中大量#include ceres/...hVS2019默认不识别ceres/前缀。必须手动设置附加包含目录右键项目 → 属性 → C/C → 常规 → 附加包含目录D:\ceres\include D:\ceres\internal\ceres D:\ceres\third_party\eigen-3.4.0 D:\ceres\third_party\glog-0.6.0\src\windows D:\ceres\third_party\gflags-2.2.2\src\gflags然后逐个添加.cpp文件不要用“添加现有项”全选VS会错误识别为C/CLID:\ceres\src\ceres\*.cc除test/和internal/外的所有.ccD:\ceres\third_party\glog-0.6.0\src\demangle.cc、logging.cc、raw_logging.cc等glog核心文件共12个D:\ceres\third_party\gflags-2.2.2\src\gflags.cc、gflags_reporting.cc共4个血泪经验glog的stacktrace_win32.cc在VS2019中编译报错GetThreadContext参数类型不匹配直接删除该文件Ceres不依赖Windows栈回溯功能不影响求解器主体。2.4 编译并验证静态库用dumpbin确认符号导出完整性编译成功后输出ceres_static.lib。立即用VS自带工具验证# 在x64 Native Tools Command Prompt for VS 2019中执行 dumpbin /symbols D:\ceres\build\ceres_static\Release\ceres_static.lib | findstr Solve应看到至少3行含?SolveSolverceresSA?AW4Summary12AEBUSolver::Options12AEAVProblem12PEAU12Z这是ceres::Solver::Solve的mangled name。若无此符号说明src\ceres\solver.cc未被编译进去——检查是否漏加该文件或#ifdef CERES_NO_SUITESPARSE宏导致条件编译跳过。逻辑说明dumpbin /symbols列出lib中所有符号findstr Solve过滤求解器入口。Ceres的Solver::Solve是核心函数若lib中无此符号链接时必报LNK2001。这步比“编译成功”更重要——很多工程看似编译过实则关键.cc被排除在外。3. 生成动态链接库DLL解决“DLL Hell”的三把锁——导出控制、依赖剥离、版本硬编码静态库.lib虽省事但多个模块引用Ceres时内存不共享且无法热更新。生产环境更倾向DLL。但VS2019默认生成的DLL会把glog/gflags符号全导出引发DLL冲突如你的exe也链接glog两个glog实例争抢全局日志锁。必须精准控制导出。3.1 创建DLL工程并声明导出宏用.def文件替代__declspec(dllexport)新建Win32 Dynamic-Link Library项目ceres_dll关键配置同2.2节/MD、v142、AVX2。不使用__declspec(dllexport)标记类因为Ceres类层次深手动标记易漏改用模块定义文件.def集中管理新建ceres_dll.def内容为LIBRARY ceres_dll EXPORTS ceres_Solve 1 ceres_CreateProblem 2 ceres_DestroyProblem 3 ceres_SetupLogging 4 ; 注意只导出C风格C接口不导出C类避免name mangling和ABI问题参数说明.def文件中1、2是序号导出ordinal export比名字导出name export更快且避免C符号名因编译器版本变化。ceres_Solve等是我们在ceres_c_api.h中封装的C接口函数后文详述这才是安全的DLL交互方式。3.2 封装C接口层隔离C ABI让Lua/Python/C#都能调用Ceres原生是C库DLL直接导出C类会因std::string、std::vector等ABI不兼容而崩溃。必须用纯C接口桥接。在ceres_c_api.h中定义// ceres_c_api.h #ifdef __cplusplus extern C { #endif // Problem句柄void* opaque typedef void* ceres_Problem; // 创建Problem ceres_Problem ceres_CreateProblem(); // 添加残差块简化版仅支持AutoDiffCostFunction int ceres_AddResidualBlock(ceres_Problem problem, void* cost_function, double* residuals, double** parameters, int num_parameters); // 求解 int ceres_Solve(ceres_Problem problem, const char* options_json); // 销毁 void ceres_DestroyProblem(ceres_Problem problem); #ifdef __cplusplus } #endif对应实现ceres_c_api.cc中用new ceres::Problem()创建对象static_castceres::Problem*(problem)转换句柄。所有参数用基本类型double, int传递绝不传std::vector或string*。逻辑说明C接口是DLL的“防火墙”。Lua用ffi.load(ceres_dll.dll)、Python用ctypes.CDLL、C#用[DllImport]都能安全调用这些函数。而ceres::Problem内部仍是C对象只是句柄不暴露给外部。这是工业级DLL开发的铁律。3.3 剥离第三方依赖让DLL只带“必要”依赖不带glog/gflags的DLL默认情况下ceres_dll.dll会依赖glog.dll、gflags.dll部署时要拷贝一堆DLL。用静态链接第三方库让ceres_dll.dll体积增大但依赖减少右键ceres_dll项目 → 属性 → 链接器 → 输入 → 附加依赖项ceres_static.lib glog_static.lib gflags_static.lib并确保glog_static.lib和gflags_static.lib也是用/MD编译的静态库不是DLL导入库。编译后用Dependencies.exe替代老版Dependency Walker打开ceres_dll.dll应只显示依赖KERNEL32.dllUSER32.dllVCRUNTIME140.dllMSVCP140.dll没有glog.dll或gflags.dll。这意味着你只需部署ceres_dll.dll VS2019 Redist无需额外DLL。提示Dependencies.exe是开源工具github.com/lucasg/Dependencies比Dependency Walker更准确识别VS2019的延迟加载DLL。若仍显示glog.dll说明你链接的是glog.libDLL导入库而非glog_static.lib静态库请检查lib文件名和路径。4. 配置你的主工程三步完成Ceres集成——链接、运行时、调试符号你有了ceres_static.lib或ceres_dll.lib现在要让它在自己的项目里真正工作。常见错误不是“找不到lib”而是“找到lib却连不上”。4.1 链接静态库/LIBPATH必须指向.lib所在目录而非项目目录假设你的主工程叫my_sfm结构为D:\my_sfm\ ├── src\ │ └── main.cpp ├── lib\ │ └── ceres_static.lib ← 放这里 └── include\ └── ceres\ ← 从D:\ceres\include拷贝在my_sfm属性中设置C/C → 常规 → 附加包含目录D:\my_sfm\include链接器 → 常规 → 附加库目录D:\my_sfm\lib链接器 → 输入 → 附加依赖项ceres_static.lib关键点附加库目录填的是D:\my_sfm\lib.lib所在文件夹不是D:\my_sfm\lib\ceres_static.lib。VS会自动在该目录下搜索ceres_static.lib。若填错成完整路径链接器报LNK1104: cannot open file D:\my_sfm\lib\ceres_static.lib路径含反斜杠转义问题。4.2 动态库调用LoadLibrary GetProcAddress的健壮写法若用DLL不要直接#pragma comment(lib, ceres_dll.lib)因为那是导入库.lib方式容易与静态库混淆。用显式加载便于错误诊断#include windows.h #include iostream // 函数指针类型 typedef int (*ceres_Solve_t)(void*, const char*); int main() { HMODULE hDll LoadLibrary(LD:\\my_sfm\\lib\\ceres_dll.dll); if (!hDll) { std::wcerr LLoadLibrary failed: GetLastError() std::endl; return -1; } ceres_Solve_t pSolve (ceres_Solve_t)GetProcAddress(hDll, ceres_Solve); if (!pSolve) { std::wcerr LGetProcAddress ceres_Solve failed: GetLastError() std::endl; FreeLibrary(hDll); return -1; } // 调用... void* problem pCreateProblem(); // 同理获取其他函数 pSolve(problem, {\max_num_iterations\: 100}); FreeLibrary(hDll); return 0; }逻辑说明LoadLibrary返回NULL时GetLastError()给出具体错误码如126找不到DLL127找不到导出函数。这比链接时静默失败更易定位。ceres_Solve必须与.def文件中声明的名字完全一致大小写敏感。4.3 调试符号配置让VS在ceres代码中单步不只停在汇编编译Ceres时生成PDB文件ceres_static.pdb。要让主工程调试时进入Ceres源码将D:\ceres\src整个目录拷贝到D:\my_sfm\debug_symbols\ceres_src在my_sfm属性 → 调试 → 符号文件(.pdb)目录D:\my_sfm\lib\ceres_static.pdb调试 → 选项 → 符号 → 选中Microsoft Symbol Servers下载系统DLL符号关键调试 → 选项 → 常规 → 取消勾选仅我的代码否则VS跳过Ceres代码启动调试设断点在ceres::Problem::AddResidualBlockF11即可步入。若提示源码不可用检查PDB路径是否正确或PDB是否与DLL/lib时间戳匹配重新编译Ceres时PDB会更新。5. 避坑指南VS2019下Ceres配置的5个真实翻车现场与解法现象、原因、解法按发生频率排序每条都是线上环境血泪总结。5.1 现象LNK2001 “unresolved external symbol ceres::Solver::Options::Options”原因ceres::Solver::Options构造函数在options.cc中定义但该文件未被加入VS工程编译。Ceres源码中options.cc位于src\ceres\但常被遗漏。解法在VS解决方案资源管理器中右键ceres_static项目 → 添加 → 现有项 → 选择D:\ceres\src\ceres\options.cc。重新编译。5.2 现象运行时弹窗“找不到VCRUNTIME140D.dll”原因Ceres工程用/MDdDebug版运行时但主工程用/MDRelease版运行时Debug/Release运行时不兼容。解法全项目统一配置。Ceres工程属性 → C/C → 代码生成 → 运行时库Multi-threaded DLL (/MD)Release或Multi-threaded Debug DLL (/MDd)Debug。主工程必须严格一致。不要混用。5.3 现象调用ceres::Solver::Solve后程序崩溃调用堆栈显示_VEC_memcpy原因AVX2指令集开启但目标CPU不支持如老款Xeon E5-26xx v1/v2。VS2019默认/arch:AVX2生成的代码在不支持AVX2的CPU上执行非法指令。解法Ceres工程属性 → C/C → 代码生成 → 启用增强指令集Not Set。或改用/arch:AVXAVX1兼容性更好。验证CPU支持__cpuid检测ECX bit 28AVX2。5.4 现象DLL加载成功GetProcAddress返回NULLGetLastError127原因.def文件中导出函数名与ceres_c_api.cc中实现的函数名不一致。C接口函数必须用extern C声明否则C编译器会mangle名字。解法检查ceres_c_api.cc是否包裹在extern C { ... }中用dumpbin /exports ceres_dll.dll确认导出表中名字是ceres_Solve非?ceres_Solve...。若看到mangled名说明extern C缺失。5.5 现象Ceres求解结果NaN且ceres::Problem::Evaluate返回false原因Eigen矩阵运算中出现除零或无穷大Ceres默认不检查数值稳定性。尤其当残差函数中1.0 / (x - y)的xy时。解法在Ceres Options中启用数值检查ceres::Solver::Options options; options.check_gradients true; // 梯度数值验证 options.gradient_check_relative_precision 1e-4; options.minimizer_progress_to_stdout true;并在残差函数中添加if (std::isnan(x) || std::isinf(x)) return false;守卫。6. 进阶技巧用CMakeList.txt生成VS2019工程的“安全模式”——保留手动控制权你可能被要求用CMake但又怕它失控。用CMake生成工程再手动修正关键配置兼顾自动化与可控性6.1 写一个最小化CMakeLists.txt只生成工程不执行构建cmake_minimum_required(VERSION 3.10) project(ceres_vs2019 LANGUAGES CXX) # 强制指定VS2019工具链 set(CMAKE_GENERATOR Visual Studio 16 2019) set(CMAKE_GENERATOR_PLATFORM x64) # 关键关闭自动下载指定本地路径 set(CERES_BUILD_BENCHMARKS OFF) set(CERES_BUILD_TESTS OFF) set(CERES_USE_EIGEN_SPARSE ON) set(CERES_USE SuiteSparse OFF) # 避免SuiteSparse版本冲突 # 指向本地依赖 set(GLOG_INCLUDE_DIR D:/ceres/third_party/glog-0.6.0/src/windows) set(GFLAGS_INCLUDE_DIR D:/ceres/third_party/gflags-2.2.2/src/gflags) set(EIGEN_INCLUDE_DIR D:/ceres/third_party/eigen-3.4.0) # 生成VS工程不编译 add_subdirectory(D:/ceres ceres_build)在命令行中mkdir build cd build cmake -G Visual Studio 16 2019 -A x64 ..生成solution.sln后不要直接Build Solution。而是用VS2019打开按第2章方法手动修改运行时库、AVX设置、包含目录——CMake只负责生成骨架细节由你掌控。6.2 自动化校验脚本每次编译后运行确保DLL符合部署要求写一个verify_ceres.bat放在D:\ceres\build\下echo off echo Verifying ceres_dll.dll echo. echo [1] Checking exports... dumpbin /exports Release/ceres_dll.dll | findstr ceres_Solve nul if %errorlevel% neq 0 echo ERROR: ceres_Solve not exported! exit /b 1 echo [2] Checking dependencies... Dependencies.exe Release/ceres_dll.dll --no-ui --output-json dep.json 2nul type dep.json | findstr glog\|gflags nul if %errorlevel% equ 0 echo ERROR: glog or gflags DLL dependency found! exit /b 1 echo [3] Checking PDB match... fc /b Release/ceres_dll.dll Release/ceres_dll.pdb nul if %errorlevel% equ 0 echo OK: DLL and PDB match. echo. echo All checks passed.每次编译后双击运行绿字All checks passed才表示可交付。这是我在三个SLAM项目中坚持用的“后悔药”。6.3 版本锁定表格VS2019 Ceres组合的黄金搭配Ceres版本VS2019工具集Eigen版本glog版本gflags版本是否推荐说明2.2.0v1423.4.00.6.02.2.2✅官方测试最充分AVX2支持稳定2.1.0v1423.3.70.5.02.2.1⚠️glog 0.5.0在VS2019中需patchstacktrace_win32.cc1.14.0v1423.2.100.3.52.1.2❌太旧不支持C17且无AVX2优化我的习惯新项目一律用Ceres 2.2.0 Eigen 3.4.0 glog 0.6.0。旧项目升级时先用git bisect定位Ceres commit再同步升级依赖。从不跨大版本跳跃如1.x→2.x因为ceres::Problem::AddResidualBlock签名在2.0中变更过一次。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

VSCode调试Linux coredump:从系统配置到图形化分析实战

VSCode调试Linux coredump:从系统配置到图形化分析实战

服务器半夜收到某个核心服务的崩溃告警,机器上只留了一个几百MB的coredump文件,可执行文件的debug符号也还在。大部分人的第一反应是gdb program core,然后敲bt,凑合看个函数名。但如果你已经习惯在VSCode里写代码,完全…

2026/10/13 2:54:39 阅读更多 →
Windows部署Docker完整指南:WSL2与Docker Desktop实战避坑

Windows部署Docker完整指南:WSL2与Docker Desktop实战避坑

最近在Windows机器上把Docker完整部署了一遍,踩了不少坑,也总结出一些经验。网上关于Windows部署Docker的教程很多,但大多是零散片段,要么只讲安装,要么只讲某个报错,真正把“为什么这样部署”“每一步背后…

2026/10/13 2:54:39 阅读更多 →
5W无线充电发射端方案全解析:IP6825芯片、A11/A11a线圈与FOD调校

5W无线充电发射端方案全解析:IP6825芯片、A11/A11a线圈与FOD调校

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:54:39 阅读更多 →

最新新闻

被动审计实战:用icedump与nticedump实现内网资产盘点与风险发现

被动审计实战:用icedump与nticedump实现内网资产盘点与风险发现

简介:这份zip合集提供icedump 6.026与nticedump 1.14两套经典调试工具的完整文件包,面向系统程序员、逆向工程师与安全研究人员,覆盖用户态进程内存分析和Windows NT内核级转储两大场景。压缩包共含410个文件,整体仅2.62MB&#x…

2026/10/13 3:39:53 阅读更多 →
中国象棋源码实战:规则引擎与状态空间建模

中国象棋源码实战:规则引擎与状态空间建模

简介:这是一份面向Java初学者的中国象棋桌面程序源码学习项目,适用于算法逻辑训练、GUI开发入门与网络编程实践。项目实现了基础棋盘交互、走子规则校验、悔棋功能及简易联网对战模块,代码经过变量与函数重命名优化,并添加必要中文…

2026/10/13 3:39:53 阅读更多 →
Linux 服务器用 Aspera/ascp 高速下载基因组数据的完整指南

Linux 服务器用 Aspera/ascp 高速下载基因组数据的完整指南

简介:这是一款专为基因组大数据传输设计的高速下载工具——Aspera Connect 3.7.4.147727 Linux 64 位安装包,面向生物信息学研究人员、生信初学者以及需从 NCBI、EBI 等公共数据库批量获取测序数据的使用者。它基于 IBM FASP 协议,能够有效规…

2026/10/13 3:39:53 阅读更多 →
计算机系统考点梳理:补码、栈帧与缓存刷题技巧

计算机系统考点梳理:补码、栈帧与缓存刷题技巧

大二上那门计算机系统课,我是被“做题家”三个字摁着脑袋走完的。一开始觉得这只是自嘲,好像谁刷题多、背得熟,谁就是不懂原理的考试机器;等真到了期末复习,我才发现这门课光靠“看懂”完全不够,你必须在纸…

2026/10/13 3:39:53 阅读更多 →
SpringBoot+Vue校园一卡通系统实战:从架构设计到部署上线全解析

SpringBoot+Vue校园一卡通系统实战:从架构设计到部署上线全解析

校园一卡通项目我前后做过好几个版本,从最初的单体JSP到后面的前后端分离,踩过的坑能写满一个笔记本。这次分享的基于SpringBoot加Vue的校园一卡通管理系统,是目前结构最清晰、也最适合拿来学习和二次开发的一套。无论是应付毕业设计&#xf…

2026/10/13 3:39:53 阅读更多 →
Flutter for OpenHarmony实战:二手置换App设置页开发全解析

Flutter for OpenHarmony实战:二手置换App设置页开发全解析

做Flutter for OpenHarmony二手物品置换App,设置页看起来是所有模块里最不起眼的那一个。真正动手写的时候你会发现,它几乎是整个App里横跨技术面最杂的页面:本地存储、主题切换、通知权限、缓存清理、账号安全全都要在这个页面里落地&#x…

2026/10/13 3:38:53 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →