【Windows】 LoadLibraryA(“F:\\svnroot\\mccv.dll“) 返回NULL, GetLastError() 返回 126

GetLastError() 返回 126,对应的错误是:

ERROR_MOD_NOT_FOUND (126)

"指定的模块找不到。"

不一定 意味着 .dll 文件本身不存在,而是表示 Windows 无法加载该 DLL 或其依赖项 。即使你确认 mccv.dll 路径存在,仍可能因以下原因导致 LoadLibraryA 失败并返回 126:


🔍 常见原因及排查方法

✅ 1. DLL 依赖的其他 DLL 缺失

这是最常见的原因!
mccv.dll 可能依赖于:

  • Visual C++ 运行库(如 MSVCR140.dll, VCRUNTIME140.dll, ucrtbase.dll 等)
  • 其他第三方 DLL(如 OpenCV、FFmpeg、自定义库等)

👉 解决方法:使用 Dependency Walker 或更现代的工具检查依赖

⚠️ 注意:旧版 Dependency Walker(depends.exe)在 Win10/Win11 上对现代 CRT(如 UCRT)支持不好,会误报缺失,建议用 Dependencies


✅ 2. 目标 DLL 架构与当前进程不匹配
  • 你的程序是 32 位(x86) ,但 mccv.dll64 位(x64),或反之。
  • LoadLibrary 在架构不匹配时会直接失败,返回 126。

👉 检查方法

  • 使用 dumpbin /headers mccv.dll(Visual Studio 开发者命令行中可用)
    • 查看 machine 字段:
      • x86 → 32 位
      • x64 → 64 位
  • 或用 Dependencies 工具,它会显示架构。

✅ 确保你的 EXE 和 DLL 同为 x86 或同为 x64


✅ 3. 缺少 Visual C++ Redistributable

如果你的 mccv.dll 是用 MSVC 编译的(比如 Visual Studio 2015--2022),它需要对应版本的 VC++ 运行库。

👉 解决方法

  • 安装对应版本的 Microsoft Visual C++ Redistributable

即使你本机有 VS,目标机器也可能没有安装运行库。


✅ 4. DLL 路径包含非 ANSI 字符或权限问题(较少见)
  • 虽然你的路径是 F:\svnroot\...,看起来没问题,但确保:
    • 当前用户对 mccv.dll读取和执行权限
    • 路径中没有隐藏的 Unicode 字符(比如从网页复制的路径)
  • 尝试将 DLL 复制到 C:\temp\mccv.dll,再加载,排除路径干扰。

✅ 5. DLL 入口点(DllMain)初始化失败
  • 如果 DllMain 中调用了某些 API(如创建线程、加载资源)失败,可能导致 DLL 加载被拒绝。
  • 但这种情况通常返回的是 127(ERROR_PROC_NOT_FOUND) 或其他错误,不过也有可能表现为 126。

🛠️ 快速诊断步骤

  1. 用 Dependencies 打开 mccv.dll

    → 查看是否有缺失依赖(红色图标)。

  2. 确认架构匹配

    → 你的 EXE 是 x86?DLL 是 x86?

  3. 在命令行用 where mccv.dll 确认路径无歧义(可选)

  4. 尝试将 DLL 放到系统目录(如 System32)测试?

    → 不推荐长期这么做,但可用于排除路径问题(注意:放 System32 需要管理员权限,且 32 位 DLL 应放 SysWOW64)

  5. 使用 Process Monitor(ProcMon)监控文件访问

    • 下载:Sysinternals ProcMon
    • 过滤 Process Name 为你的 exe,Path 包含 mccv.dll
    • 查看是否成功打开文件,以及后续是否尝试加载其他 DLL 并失败。

💡 临时验证:能否用 rundll32 加载?

cmd 复制代码
rundll32 "F:\svnroot\mediacontrol_sky_soft\40-saturn\common_cv\unit\prj_win32\mccv.dll",#

如果也失败,基本确认是 DLL 本身或依赖问题。


总结

LoadLibraryA 返回 NULL + GetLastError() = 126

几乎总是因为:依赖 DLL 缺失 或 架构不匹配

请优先使用 Dependencies 工具分析 mccv.dll 的依赖链!

相关推荐
梦帮科技32 分钟前
OpenClaw 桥接调用 Windows MCP:打造你的 AI 桌面自动化助手
人工智能·windows·自动化
春日见2 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
C++ 老炮儿的技术栈2 小时前
VS2015 + Qt 实现图形化Hello World(详细步骤)
c语言·开发语言·c++·windows·qt
浩浩测试一下3 小时前
内网---> WriteOwner权限滥用
网络·汇编·windows·安全·microsoft·系统安全
一个人旅程~3 小时前
Dell n4020双系统分区步骤和linux优化操作
linux·windows·电脑
love530love4 小时前
【高阶编译】Windows 环境下强制编译 Flash Attention:绕过 CUDA 版本不匹配高阶指南
人工智能·windows·python·flash_attn·flash-attn·flash-attention·定制编译
勾股导航4 小时前
Windows安装GPU环境
人工智能·windows·gnu
x***r1514 小时前
PhpStudy2018怎么用?完整安装与使用指南(新手必看)
windows
一品人家10 小时前
win32汇编使用GDI+入门教程之九
汇编·windows·win32汇编
小天源15 小时前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067