2012-09-14 59 views
12

Tôi tạo ra lớp imageHolder:Loại khởi ngoại lệ

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

tôi có thể tạo thể hiện của lớp và khởi tạo nó, như thế này:

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

Trong thời gian chạy tôi nhận được ngoại lệ này:

Kiểu khởi tạo cho 'Emgu.CV.CvInvoke' đã ném một ngoại lệ.

enter image description here

Đây là giải pháp Explorer cửa sổ:

enter image description here

Bất cứ ý tưởng tại sao tôi nhận được ngoại lệ này và làm thế nào tôi có thể sửa chữa nó?

Cảm ơn bạn trước.

+2

Dường như nó không thể tìm thấy opencv_core240.dll; có cần phải ở trong cùng một thư mục không? – zimdanen

+0

không chính xác là một bản sao của điều này (vì không có câu trả lời được chấp nhận) nhưng có thể một số thông tin về [câu hỏi khác này] (http://stackoverflow.com/questions/10930610/opencv-unmanaged-dlls-not-found- asp-net) và câu trả lời có thể làm việc cho bạn –

+1

Để nhắc lại và mở rộng trên những gì @zimdanen nói, văn bản InnerException nói rằng nó không thể tải các đề cập zimdanen DLL. Xem http://stackoverflow.com/questions/2066180/the-specified-module-could-not-be-found-0x8007007e để được giải thích. – akton

Trả lời

21

TypeInitializationException (ngoại trừ bạn đang thấy) được ném bất cứ khi nào một hàm tạo tĩnh ném ngoại lệ hoặc bất cứ khi nào bạn cố gắng truy cập một lớp nơi hàm tạo tĩnh đã ném ngoại lệ - thuộc tính InnerException của nó là thuộc tính chứa chi tiết của ngoại lệ đã được ném thực tế - đây là ngoại lệ mà bạn cần phải điều tra.

Trong trường hợp này từ ảnh chụp màn hình của bạn, vấn đề có vẻ là DLL "opencv_core240.dll" không thể tìm thấy. Điều này có thể cho một số lý do

  • Các DLL không thể được tìm thấy
  • Một trong những phụ thuộc của các DLL không thể được tìm thấy
  • Các DLL là trong các định dạng hình ảnh không chính xác (32 bit như trái ngược với 64 bit)

Tôi khuyên bạn nên xem qua số this question để xem có đề xuất nào giúp bạn.

1

VS Project Properties Page

Kiểm tra lĩnh vực này đã làm các trick cho tôi. Dưới Dự án → Thuộc tính → Xây dựng (Dự án chính/Khởi động)

Các vấn đề liên quan