【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 的依赖链!

相关推荐
gs801402 小时前
【保姆级】MetaGPT安装避坑指南:Windows+Conda环境下解决依赖冲突、版本过低及配置失效问题
人工智能·windows·conda·metagpt
危险、2 小时前
Windows 怎么修改Claude Code的API Key?
windows·claude code
Traced back3 小时前
Windows窗体应用 + SQL Server 自动清理功能方案:按数量与按日期双模式
数据库·windows·c#·.net
阿蒙Amon3 小时前
C#每日面试题-索引器和迭代器的区别
开发语言·windows·c#
逍遥德3 小时前
Java Stream Collectors 用法
java·windows·python
玉米很好吃4 小时前
电脑常用参数
windows·电脑
哇咔咔哇咔4 小时前
Windows下载、安装并运行MinIO,访问WebUI界面
windows·oss
Whoami!4 小时前
⓫⁄₄ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 搜索Windows的敏感信息
windows·网络安全·信息安全·信息收集
余茕然5 小时前
windows用nvm管理nodejs
windows·node.js