You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8 WinForms中Emgu.CV加载cvextern.dll失败如何解决?

解决Emgu.CV中cvextern.dll找不到的异常

针对你遇到的System.TypeInitializationException(内部为DllNotFoundException: Unable to load DLL 'cvextern')问题,以下是几种可行的修复方案:

1. 放弃Any CPU,指定具体目标平台

Emgu.CV依赖的OpenCV原生DLL分32位和64位版本,Any CPU模式下运行时无法自动匹配正确的架构,导致DLL加载失败:

  • 右键项目 → 属性 → 生成
  • 将“平台目标”从Any CPU改为x86或x64(根据你的系统和需求选择)
  • 重新生成项目

2. 确保安装了包含原生依赖的NuGet包

仅安装Emgu.CV核心包可能缺少Windows平台的原生DLL,需要补充安装对应的运行时包:

  • 在NuGet包管理器中卸载现有的Emgu.CV包
  • 安装Emgu.CV.runtime.windows包(该包包含Windows平台所需的cvextern.dll及OpenCV相关原生文件)
  • 重新生成项目

3. 验证原生DLL是否被复制到输出目录

检查项目的输出目录(bin/Debug或bin/Release)下是否存在对应架构的cvextern.dll:

  • 如果输出目录中没有,手动从NuGet包安装路径复制:
    比如路径为packages/Emgu.CV.runtime.windows.x.x.x/runtimes/win-x64/native(替换x.x.x为实际包版本,win-x64对应x64平台,win-x86对应x86平台)
  • 将该路径下的所有DLL复制到项目输出目录的根目录,或者对应架构的子目录中
  • 也可以在项目中添加这些DLL作为内容文件,设置“复制到输出目录”为如果较新则复制

4. (可选)保留Any CPU时启用“首选32位”

如果必须使用Any CPU模式,可以尝试:

  • 右键项目 → 属性 → 生成
  • 勾选“首选32位”选项
  • 这种方式会让程序在64位系统上以32位模式运行,加载32位版本的cvextern.dll,但仅适用于兼容32位的场景

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:35:25