2010-06-09 33 views
28

Tôi đang xây dựng một ứng dụng GIS nhưng bất cứ khi nào tôi chạy mã nó đem lại cho tôi lỗi nàyHRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

System.Runtime.InteropServices.COMException was unhandled Retrieving the COM class factory for component with CLSID {FBF5715D-A05D-11D4-A64C-0008C711C8C1} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Ngoài ra, trong phần Properties Project Option cho ký Đối với COM Interop bị vô hiệu hóa.

+1

tôi đã cố gắng cả trong những giải pháp gợi ý dưới đây để vô ích. Có ai có ý tưởng khác không? –

Trả lời

17

Chỉ cần nhìn vào thư có vẻ như một hoặc nhiều thành phần bạn tham chiếu hoặc một hoặc nhiều phụ thuộc của chúng không được đăng ký đúng cách.

Nếu bạn biết thành phần nào bạn có thể sử dụng regsvr32.exe để đăng ký, chỉ cần mở dấu nhắc lệnh, đi tới thư mục chứa thành phần và nhập regsvr32 filename.dll (giả sử đó là dll), nếu nó hoạt động, hãy thử để chạy lại mã, nếu không hãy quay lại đây với lỗi.

Nếu bạn không biết thành phần đó là gì, hãy thử cài đặt lại/sửa chữa phần mềm GIS (Tôi cho rằng bạn đã cài đặt một số phần mềm GIS bao gồm thành phần bạn đang cố sử dụng).

+0

thanx rất nhiều nó đã làm việc :) tôi đăng ký nó và nw làm việc tốt của nó ..yeah bạn là đúng tôi đã sử dụng các thành phần GIS trong ứng dụng của tôi. thanx một lần nữa để được giúp đỡ ur – user362130

+0

Tôi có một .exe (not .dll). Từ dấu nhắc Visual Studio Cmd (vị trí của .exe) Tôi chạy "MyProgram.exe/regsvr" – robor78

37

Điều này cũng có thể là vấn đề xây dựng mã sử dụng cấu hình 64 bit. Bạn có thể thử chọn x86 làm nền tảng xây dựng có thể giải quyết vấn đề này. Để làm điều này kích chuột phải vào các giải pháp và chọn Configuration Manager Từ đó bạn có thể thay đổi Platform của dự án sử dụng 32-bit .dll để x86

+0

Tôi đã có cùng một vấn đề ngược lại - Tôi cần một dự án 64 bit, 'Bất kỳ CPU' và' x32' đã không công việc. –

+0

Chỉ muốn nói lời cảm ơn. Điều này đã giúp tôi có được một dự án nâng cấp hoạt động tốt. – impr0t

+0

Tôi không thể tin rằng thay đổi từ 'Bất kỳ CPU' thành 'x86' sẽ tạo ra tất cả sự khác biệt nhưng nó đã làm! –

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