EmguCV cvextern System.DllNotFoundException

Viewed 12579

I am trying to run the example of LicensePlateRecognition in EmguCV 3.1. But I always get the error System.DllNotFoundException and the message is that "cvextern.dll cannot be loaded". I am running Windows 7 with Visual Studio 2013 (the computer is provided by my company).

I copied the said dll and some other dlls in the folder to the debug folder (the profile is set to debug mode, and I tried both x86 and x64 versions). After getting the error again and again I started to suspect that it's because of my video card driver (some Google results suggested so). I updated that and the error persisted.

After some more Googling, I found the Dependency Walker. One file "IEShims.dll" is missing. I downloaded that and put it into the debug folder with no luck.

Some output I think might be relevant.

Loading open cv binary from C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x64

LoadLibraryEx C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\opencv_ffmpeg310_64.dll failed with error code 87: The parameter is incorrect.

File C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\opencv_ffmpeg310_64.dll cannot be loaded.

LoadLibraryEx C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\cvextern.dll failed with error code 87: The parameter is incorrect.

File C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\cvextern.dll cannot be loaded.

Does anyone know what's wrong with that?

The error seems to be stemmed from

#if !UNITY_IPHONE
     //Use the custom error handler
     RedirectError(CvErrorHandlerThrowException, IntPtr.Zero, IntPtr.Zero);
#endif

Which is in the method

  /// <summary>
  /// Attempts to load opencv modules from the specific location
  /// </summary>
  /// <param name="modules">The names of opencv modules. e.g. "opencv_cxcore.dll" on windows.</param>
  /// <returns>True if all the modules has been loaded successfully</returns>
  public static bool DefaultLoadUnmanagedModules(String[] modules)

I tried a whole day to find the solution but I really don't know what I can do now. Any help is appreciated.

EDIT: I also tried TlbImp with no luck.

TlbImp : error TI1002 : The input file 'D:\Resources\cvextern.dll' is not a valid type library.

6 Answers

This can be resolved by installing the library using Nuget Package Manager in Visual Studio 2019 Tools> NuGet Package Manager > Package Manager Console

you can use the following command to install fully

  • Install-Package Emgu.CV
  • Install-Package Emgu.CV.runtime.windows

And everything worked fine for me.

Related