【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.dll 是 64 位(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 的依赖链!

相关推荐
sukalot1 小时前
Windows 驱动实例分析系列:libwdi 驱动分析 - 应用篇(一)
windows·驱动开发
小道士写程序2 小时前
Windows Rust 环境安装指导
开发语言·windows·rust
传奇开心果编程2 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
Tisfy2 小时前
两台旧电脑修复 —— 绕过WinXP密码登录、备份和恢复Win7数据、安装Win10
windows·数据恢复·系统重装
传奇开心果编程2 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc1233 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium
2401_872418783 小时前
Windows服务器:错误 403 - 禁止访问:本地 FTP 上传文件到网站服务器后提示无访问权限
运维·服务器·windows
YCOSA202514 小时前
Windows11_InsiderPreview_EnterpriseVL_x64_zh-cn_29680_1000.iso 官方直链
windows
怎么没有名字注册了啊16 小时前
Windows Server 2008 R2 如何开启Aero
windows
lingchen190618 小时前
Windows CMD 的 `cd`(change directory,切换目录)命令
windows·命令模式