调用Emgu.CV.MatInvoke时抛出DllNotFoundException错误求助
以下是针对DllNotFoundException: 无法加载DLL 'cvextern': 找不到指定的模块错误的实用解决步骤:
确保Emgu.CV相关包安装完整
检查NuGet包管理器,确认已安装Emgu.CV以及对应平台的runtime包(比如Windows环境下的Emgu.CV.runtime.win)。cvextern.dll是由runtime包提供的,若仅安装主包会缺失该文件。如果版本不匹配,卸载后重新安装相同版本的主包和runtime包。检查输出目录是否包含cvextern.dll
编译项目后,查看项目的bin/Debug或bin/Release文件夹,确认存在cvextern.dll以及配套的OpenCV依赖库。如果缺失,找到NuGet安装目录下对应runtime包的dll文件(比如packages/Emgu.CV.runtime.win.x.x.x/runtimes/win-x64/native),手动复制到输出目录,注意选择与项目平台目标(x64/x86)一致的文件。设置正确的项目平台目标
右键项目→属性→生成→平台目标,将其设置为x64或x86,避免使用AnyCPU。Emgu.CV的runtime包分平台架构,AnyCPU模式下可能会加载错误架构的DLL导致失败。安装VC++运行库依赖
cvextern.dll依赖Microsoft Visual C++ Redistributable运行库,根据Emgu.CV版本安装对应版本的运行库(比如2019或2022版),注意选择与系统架构(32/64位)匹配的安装包。额外验证模型文件路径
代码中加载的face_recognition_model.xml和haarcascade_frontalface_default.xml需确保路径正确,建议将文件放在项目输出目录下,或使用绝对路径,避免后续出现文件找不到的错误。
内容的提问来源于stack exchange,提问作者Ahsan Ali Siddiqi

