ΔΙΑΔΙΚΑΣΙΕΣ: Αντιμετώπιση προβλημάτων "Μέλος δεν βρέθηκε" σφάλμα 0x80020003


Σύνοψη


Αυτό το άρθρο περιγράφει ορισμένες κοινές αιτίες του σφάλματος OLE Automation - 2147352573 (δεκαεξαδική 80020003) και τα προτεινόμενα βήματα αντιμετώπισης προβλημάτων.


Το σφάλμα μπορεί να εμφανίζεται ως DISP_E_MEMBERNOTFOUND.

Περισσότερες πληροφορίες


Αιτία 1

Καλείτε IDispatch::Invoke() με wFlags οριστεί μόνο σε DISPATCH_METHOD και το dispid προσδιορίζει μια ιδιότητα.


Προτεινόμενη αντιμετώπιση 1

Τεκμηρίωση του Win32 SDK για IDispatch::Invoke() δηλώνει αν το dispid αντιπροσωπεύει μια ιδιότητα, πρέπει επίσης να ορίσετε τη σημαία DISPATCH_PROPERTYGET. Αυτό το ζήτημα παρουσιάζεται συνήθως όταν χρησιμοποιείτε το Microsoft Visual C++ για να δημιουργήσετε προγράμματα εξομοίωσης κλάσης από τις βιβλιοθήκες τύπων Microsoft Office 95. Πρέπει να τροποποιήσετε ρητά το αρχείο .cpp που δημιουργείται για κάθε κλήση InvokeHelper() που ανακτά μια ιδιότητα για να χρησιμοποιήσετε τη σημαία DISPATCH_PROPERTGET. Εάν χρησιμοποιείτε τις βιβλιοθήκες τύπων του Microsoft Office 97, αυτό γίνεται αυτόματα από τον οδηγό της Microsoft Visual C++ κλάσης.


Αιτία 2

Χρησιμοποιείτε εσφαλμένο δείκτη IDispatch.

Προτεινόμενη αντιμετώπιση 2

Αυτό συμβαίνει συνήθως όταν χρησιμοποιείτε αυτοματισμού OLE με τις εφαρμογές του Microsoft Office 97 ή οποιαδήποτε εφαρμογή που έχει ένα μοντέλο αντικειμένου ιεραρχική. Που μπορεί να έχει προετοιμάσει μια κλάση COleDispatchDriver, που αντιπροσωπεύει ένα αντικείμενο X, τοποθετήστε το δείκτη του IDispatch για ένα αντικείμενο Y. Αυτό το σφάλμα μπορεί ή δεν μπορεί να προκύψει με το Microsoft Office 95 ή άλλες εφαρμογές με μία μόνο υλοποίηση του IDispatch. Αυτό συμβαίνει επειδή το αντικείμενο X και Y του αντικειμένου μπορεί τόσο να υλοποιηθεί μέσω μίας διασύνδεσης IDispatch και συνεπώς δεν θα προκύψει διένεξη.

Αιτία 3

Χρησιμοποιείτε μια dispid δεν είναι έγκυρη.

Προτεινόμενη αντιμετώπιση 3

Ο διακομιστής δεν αναγνωρίζει το dispid που έχετε καθορίσει στην κλήση για IDispatch::Invoke(). Βεβαιωθείτε ότι αυτό είναι το σωστό dispid, ενδεχομένως μέσω IDispatch::GetIDsOfNames().

Αναφορές


Για περισσότερες πληροφορίες σχετικά με IDispatch ή OLE Automation, διαβάστε την τεχνική σημείωση TN039 "Εφαρμογή αυτοματισμού MFC/OLE."


Για περισσότερες πληροφορίες σχετικά με τις βιβλιοθήκες τύπων και τον τρόπο χρήσης τους με Microsoft Visual C++, ανατρέξτε στο θέμα:


Βοήθεια κιτ ανάπτυξης λογισμικού Microsoft Win32. Αναζήτηση σε: "Τύπος βιβλιοθήκες, εισαγωγή με ClassWizard".



Για περισσότερες πληροφορίες, ανατρέξτε στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft:


Σφάλμα 165273 : σφάλματα XL97 χρήση αυτοματισμού OLE