2012-03-20 47 views
5

Tôi chịu trách nhiệm bảo trì ứng dụng C# (VS 2005). Ứng dụng C# này gọi dll ("mydll.dll"). Tôi cần phải thực hiện một vài thay đổi trên dll trong câu hỏi.Ngoại lệ từ HRESULT: 0x80004002 (E_NOINTERFACE)

Tôi có tệp "mydll.vbp" được viết bằng Visual Basic 6.0. Tôi thực hiện thay đổi của tôi trong Visual Studio và, sau đó, "thực hiện" mydll "" từ giao diện Visual Basic.

Vấn đề là, bây giờ, ở mỗi lần tôi cố gắng dụ một lớp từ "mydll.dll" trong chế độ debbuger trong C#, tôi đã sau "InvalidCastException"

Unable to cast COM object of type mydll.ClassFrommydll to interface type mydll._ClassFrommydll'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{384FB79F-B636-4655-9441-8222692AB8AE}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

Tôi cố gắng để tái -reference các dll trong câu hỏi ... nhưng điều đó không thay đổi bất cứ điều gì.

Bất kỳ ý tưởng nào về nó có thể đến từ đâu?

Rất nhiều người cảm ơn tất cả yopu có thể trợ giúp. Đã bị mắc kẹt với vấn đề này trong nhiều ngày nay. Bắt đầu cảm thấy áp lực ...

+0

Đối với bất kỳ ai khác tình cờ về vấn đề này, có một lời giải thích tuyệt vời trong [câu trả lời này] (http://stackoverflow.com/a/16943296/210780). – ashes999

Trả lời

0

Xóa tất cả GUID và thuộc tính "ComVisible" khỏi lớp, sau đó chuyển thuộc tính [assembly: ComVisible (true)] trong AssemblyInfo-File thành 'true'.

+0

tôi có cùng một vấn đề, điều này dường như không giải quyết bất cứ điều gì, cũng không có ý nghĩa gì ... –

1

đánh dấu những lớp học chính [STAThread] và vấn đề của bạn sẽ được giải quyết

+0

Tại sao? có vẻ như điều này không giải quyết được vấn đề ... –

+1

@ L.Trabacchin bạn có thể tìm thấy câu trả lời cho "tại sao" trong [câu trả lời này] (http://stackoverflow.com/a/16943296/210780). – ashes999

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