OpenCVSharp:无法加载 DLL“OpenCvSharpExtern”

Bil*_*ias 10 .net c# opencv

我已经在我的项目中使用 NuGet 管理器安装了最新的 OpenCVSharp 2 (2.4.10.201...)。有关 OpenCVSharp.CvMat 的所有内容都工作正常(加载、操作等),因此我确信安装是正确的。

但是我根本无法使用 OpenCVSharp.CPlusPlus!问题是它不加载 OpenCvSharpExtern.dll。

try-catch 块显示错误:

try
{
    Mat mat = new Mat();
} catch (Exception err)
{
    Console.WriteLine( err );
}

System.TypeInitializationException: The type initializer for 'OpenCvSharp.CPlusPlus.Mat' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at OpenCvSharp.CPlusPlus.NativeMethods.core_Mat_sizeof()
   at OpenCvSharp.CPlusPlus.Mat..cctor()
   --- End of inner exception stack trace ---
   at OpenCvSharp.CPlusPlus.Mat..ctor()
   at MainClass.Main() in C:\Users\kotsias\Documents\Visual Studio 2015\Projects\MyCVSharp\ConsoleApplication1\Test.cs:line 14
Run Code Online (Sandbox Code Playgroud)

OpenCvSharpExtern.dll与我的 .exe 一起 部署在以下子文件夹中:

..\dll\x86

&

..\dll\x64

如果我手动将x64 .dll复制到 .exe 所在的文件夹中,我仍然会遇到上述相同的错误。如果我复制x86 .dll,则会收到不同的错误:

System.TypeInitializationException: The type initializer for 'OpenCvSharp.CPlusPlus.Mat' threw an exception. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
   at OpenCvSharp.CPlusPlus.NativeMethods.core_Mat_sizeof()
   at OpenCvSharp.CPlusPlus.Mat..cctor()
   --- End of inner exception stack trace ---
   at OpenCvSharp.CPlusPlus.Mat..ctor()
   at MainClass.Main() in C:\Users\kotsias\Documents\Visual Studio 2015\Projects\MyCVSharp\ConsoleApplication1\Test.cs:line 14
Run Code Online (Sandbox Code Playgroud)

小智 24

仅安装“OpencvSharp{version} nuget”包是不够的。您还必须安装“OpencvSharp{version}.runtime.{operating_system}”软件包。

例如,在我的例子中,我必须安装以下 Nuget 包:

  • OpencvSharp4
  • OpencvSharp4.runtime.win


Gaz*_*yer 5

有些人可能遇到的另一个问题:

OpenCvSharpExtern.dll 需要 mfplat.dll,它是媒体功能包的一部分。默认情况下,Windows“N”版本不包含此功能。

可以从“应用程序和功能”->“可选功能”->“添加功能”进行安装。

  • 这个答案可能挽救了我几个小时的生命。 (2认同)

小智 2

我在生产中遇到这个问题(创建安装文件并安装后)。我通过执行以下步骤解决了这个问题

  1. 通过 NuGet 包安装 OpenCVSharp
  2. 在项目属性中将平台目标设置为 X64
  3. 创建具有相同平台的安装文件
  4. 手动将“packages\OpenCvSharp4.runtime.win.4.5.3.20210817\runtimes\win-x64\native\OpenCvSharpExtern.dll”文件复制到安装目录中。