2012-09-14 219 views
12

我創建imageHolder的類:類型初始化例外

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; } 
     } 
    } 

我創建類的實例,並初始化它,就像這樣:

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

在運行時,我得到這個異常:

'Emgu.CV.CvInvoke'的類型初始值設定項引發了一個異常。

enter image description here

這裏是解決方案資源管理器窗口:

enter image description here

任何想法,爲什麼我得到這個例外,我該如何解決?

預先感謝您。

+2

看起來像它找不到opencv_core240.dll;它需要在同一個文件夾中嗎? – zimdanen

+0

不完全是這個的重複(因爲沒有被接受的答案),但也許關於[這個其他問題]的一些信息(http://stackoverflow.com/questions/10930610/opencv-unmanaged-dlls-not-found- asp-net)和答案可能適用於你 –

+1

要重申和擴展@zimdanen說的內容,InnerException文本指出它無法加載DLL zimdanen提到。有關說明,請參閱http://stackoverflow.com/questions/2066180/the-specified-module-could-not-be-found-0x8007007e。 – akton

回答

21

TypeInitializationException(您看到除外)被拋出時靜態構造函數拋出一個異常,或當您試圖訪問一個類,其中靜態構造函數拋出異常 - 它InnerException屬性是包含詳細的財產實際拋出的異常 - 這是您需要調查的異常。

在這種情況下,從您的屏幕截圖看來,問題似乎是無法找到DLL「opencv_core240.dll」。這可能是由於多種原因

  • 該DLL找不到
  • 一個DLL的依賴關係的找不到
  • 的DLL是不正確的圖像格式(32位爲反對64位)

我建議你看看this question看看有沒有什麼建議可以幫助你。

1

VS Project Properties Page

檢查該字段並獲得成功,我解決了這個問題。在項目→屬性→構建(主/啓動項目)