2009-03-12 29 views
5

Tôi đang cố gắng để tạo ra một đối tượng COM mới trong DLL của tôi bằng cách sử dụng ATL Simple Object Hướng dẫn trong Visual Studio 2005.ATL đối tượng đơn giản phù thủy - "Object Xxx đã tồn tại" lỗi

tôi nhập tên viết tắt của đối tượng và tất cả các trường khác có nguồn gốc.

Tuy nhiên, khi tôi bấm Tiếp trong trình hướng dẫn, thông báo lỗi sau đi lên:

Object 'IXxxInterfaceName' already exists 

Tôi đã tìm kiếm toàn bộ giải pháp của tôi cho tất cả các tài liệu tham khảo để IXxxInterfaceName và không thể nhìn thấy nó được xác định ở bất cứ đâu.

Trình hướng dẫn xác định rằng nó đã tồn tại như thế nào?

Trả lời

2

Tôi chưa bao giờ phát hiện ra lý do tại sao thuật sĩ xác định rằng tên đối tượng đã tồn tại - Tôi đoán có điều gì đó được lưu trong bộ nhớ cache ở đâu đó mà tôi không thể theo dõi.

Cuối cùng, tôi nối thêm 2 vào cuối tên giao diện khi tạo nó cho phép nó được thêm vào. Sau đó, tôi thay thế tất cả các lần xuất hiện của IXxxInterfaceName2 bằng IXxxInterfaceName. Tất cả mọi thứ đã làm việc sau này.

Nếu tôi theo dõi nguyên nhân gốc rễ của sự cố này, tôi sẽ cập nhật câu trả lời.

+0

Sự cố vẫn tồn tại và chính là năm 2015. Xóa đối tượng đơn giản ATL hiện tại có nghĩa là bạn không thể tạo lại. Ít nhất tôi đã không tìm được cách để làm điều đó. Tôi thậm chí còn phải sử dụng để dọn dẹp registry khỏi những lần thử trước đó. Microsoft chưa bao giờ sở hữu vấn đề này. – rtischer8277

+0

Cách giải quyết cho sự thất bại tạo mã ATL-Simple-Object lần thứ hai này là tạo ra một dự án MFC mới với Tự động hóa. Thêm một lớp mới của loại đối tượng đơn giản ATL. Sau đó sao chép mới được tạo. .... rgs và .h và .cpp tập tin vào dự án của bạn. – rtischer8277

+0

Kiểm tra tệp .idl của bạn. Tạo một 'ATL Simple Object' thêm các câu lệnh giao diện. Xóa tất cả các dòng và lỗi được thêm vào này sẽ biến mất. – rtischer8277

1

Được xác định trong thư viện bạn đang tham chiếu?

+0

Có thể. Bạn có thể nghĩ ra một cách dễ dàng tôi có thể hình dung ra điều này mà không cần phải dùng đến sức mạnh vũ phu cho mỗi thư viện mà tôi đang tham khảo? – LeopardSkinPillBoxHat

+0

Thực tế bây giờ tôi nghĩ về nó, nó không phải là rất có khả năng nó sẽ được sử dụng trong một thư viện tôi đang tham khảo. Tên giao diện có tiền tố chuẩn được sử dụng bởi tất cả các giao diện trong sản phẩm của chúng tôi. Vì vậy, tôi nghi ngờ bất kỳ thư viện bên thứ ba nào cũng sẽ sử dụng cùng một tên. – LeopardSkinPillBoxHat

+0

đúng. đó là một điều kỳ lạ. điều gì xảy ra nếu bạn chnage tên một chút? –

0

Cũng xảy ra trong VS 2008. Tuy nhiên giải pháp làm sạch và dự án sạch từ tùy chọn xây dựng giải quyết này :-)

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