2012-09-14 13 views
12

Stworzyłem klasę imageHolder:Typ inicjalizacji wyjątek

public class ImageHolder : Image<Bgr, Byte> 
    { 
     private String imagePath; 

     public ImageHolder(String path):base(path) 
     { 
      this.imagePath = path;      
     } 
     public String imgPathProperty 
     { 
      get 
      { return imagePath; } 
      set 
      { imagePath = value; } 
     } 
    } 

tworzę instancję klasy i zainicjować go tak:

private ImageHolder originalImageHolder; 
    originalImageHolder = new ImageHolder(openFileDialog.FileName); 

W czasie wykonywania otrzymuję ten wyjątek:

Inicjator typu dla "Emgu.CV.CvInvoke" zwrócił wyjątek.

enter image description here

Oto okno Solution Explorer:

enter image description here

Każdy pomysł Dlaczego otrzymuję ten wyjątek i jak mogę to naprawić?

Z góry dziękuję.

+2

Wygląda na to, że nie można znaleźć pliku opencv_core240.dll; czy to musi być w tym samym folderze? – zimdanen

+0

nie jest dokładnie duplikatem tego (ponieważ nie było akceptowanej odpowiedzi), ale może niektóre informacje na [to inne pytanie] (http://stackoverflow.com/questions/10930610/opencv-unmanaged-dlls-not-found- asp-net) i odpowiedzi mogą ci pomóc –

+1

Aby powtórzyć i rozwinąć to, co powiedział @zimdanen, tekst InnerException stwierdza, że ​​nie udało się załadować wspomnianych bibliotek DLL. Zobacz http://stackoverflow.com/questions/2066180/the-specified-module-could-not-be-found-0x8007007e dla wyjaśnienia. – akton

Odpowiedz

21

TypeInitializationException (wyjątek, który widzisz) jest generowany gdy statyczny konstruktor zgłasza wyjątek, lub gdy użytkownik próbuje uzyskać dostęp do klasy, gdzie statyczny konstruktor zwrócił wyjątek - jego InnerException nieruchomość stanowi własność, która zawiera szczegóły wyjątku, który został faktycznie zgłoszony - jest to wyjątek, który należy zbadać.

W tym przypadku na twoim zrzucie ekranu pojawia się problem polegający na tym, że nie można znaleźć biblioteki DLL "opencv_core240.dll". To może być dla wielu powodów

  • DLL nie udało się znaleźć
  • Jednym z zależnościami DLL nie udało się znaleźć
  • DLL był w nieprawidłowym formacie obrazu (32 bit jak w przeciwieństwie do wersji 64-bitowej)

Proponuję przejrzeć this question, aby sprawdzić, czy któraś z sugestii na ten temat pomoże.

1

VS Project Properties Page

Sprawdzanie to pole wystarczyły dla mnie. Pod Projekt → Właściwości → Kompilacja (Projekt główny/rozruchowy)