Για να πραγματοποιήσετε μια λειτουργία , την τάξη , το στοιχείο δεδομένων ή τη λειτουργία μέλος κατηγορίας προσιτά στο καλώντας πρόγραμμα των Windows , θα πρέπει να το εξαγάγετε πρώτα . Μια κατηγορία ή λειτουργία μπορεί να εξαχθεί κατά τον ορισμό του χρησιμοποιώντας τη λέξη-κλειδί " __declspec ( dllexport ) " πριν από τη λειτουργία , την τάξη ή όνομα μεταβλητής , ως εξής :
Void __ declspec ( dllexport ) MyClass : δημόσια CObjectName { ..... }
Στο αρχείο DLL επικεφαλίδα , βάλτε την λέξη-κλειδί πριν από το όνομα της συνάρτησης σε δήλωση πρωτότυπο . Η λέξη-κλειδί " __declspec ( dllexport ) " αποθηκεύει τα ονόματα των λειτουργιών στον πίνακα των εξαγωγών της DLL του . Για να εξοικονομήσει το χώρο που καταλαμβάνει ο πίνακας , χρησιμοποιήστε τακτικούς αριθμούς αντί για ονόματα συναρτήσεων .
Εικόνων Export Windows DLL Αντικείμενα Μέσω Ενότητα Ορισμός Αρχεία
Η
Ως εναλλακτική λύση για τη λέξη-κλειδί " __declspec ( dllexport ) , " δημιουργήσετε ένα αρχείο ορισμού μονάδα η οποία αναφέρει το όνομα της βιβλιοθήκης , προαιρετική περιγραφή και παραθέτει τα ονόματα των λειτουργιών , τις κατηγορίες και τις μεταβλητές των δεδομένων στο αρχείο DLL , μαζί με το προαιρετικό τακτικές τιμές . Η κανονική τιμή της συνάρτησης κυμαίνεται από 1 έως Ν , όπου Ν είναι ο αριθμός των λειτουργιών του DLL . Το αρχείο ορισμού μονάδα έχει την επέκταση " . . DEF " Ακολουθεί ένα παράδειγμα ενός αρχείου ορισμό της λειτουργικής μονάδας , ή ένα αρχείο DEF : .
ΒΙΒΛΙΟΘΗΚΗ ReportWriterDESCRIPTION Αυτή η δυναμική βιβλιοθήκη περιλαμβάνει τη λειτουργικότητα γεννήτρια έκθεση της MyProduct.RPT_setup @ 1RPT_design @ 2RPT_run @ @ 3RPT_print 4
Εάν δημιουργήσετε ένα Microsoft Foundation Class DLL χρησιμοποιώντας AppWizard Visual Studio , ο οδηγός θα δημιουργήσει ένα σκελετό . DEF αρχείο για το DLL και να το προσθέσετε στο έργο . Προσθήκη εγγραφές για DLL λειτουργίες σε αυτό. DEF αρχείο για την εξαγωγή τους . Η μορφή του πρωτοτύπου λειτουργία που χρησιμοποιείται από το πρόγραμμα κλήσης πρέπει να ταιριάζει με τη μορφή των καταχωρήσεων λειτουργούν στο αρχείο DEF . . Είτε χρησιμοποιούν απλούς ορισμούς και στα δύο μέρη , ή compiler ειδικά , οι ορισμοί compiler που δημιουργείται στα δύο μέρη με συνέπεια .
Η Εισαγωγές και Εξαγωγές Επέκταση DLLs
Η
Μια Microsoft Class Ίδρυμα DLL επέκτασης συνήθως αποτελείται αποκλειστικά από ανακυκλώσιμα κατηγορίες που προέρχονται από υπάρχοντες τύπους τάξη MFC . Είναι χτισμένο με ένα αρχείο DLL έκδοση του MFC , και μπορεί να κληθεί από τις εφαρμογές και τα αρχεία DLL κατασκευαστεί με αυτό το κοινό έκδοση του MFC . Για να εξαγάγετε τις κατηγορίες με τα DLL επέκτασης, χρησιμοποιήστε τη μακροεντολή " AFX_EXT_CLASS " πριν από το όνομα της κλάσης , όπως αυτό : Κατηγορία AFX_EXT_CLASS CMyViewClass : δημόσια CView { //σώμα Class } ? Εάν χρησιμοποιείτε ένα αρχείο DEF , προσθέστε τον ακόλουθο κώδικα μακροεντολής στην αρχή . και το τέλος του εκτεταμένου αρχείου DLL header : # αδιευκρ AFX_DATA # define AFX_DATA AFX_EXT_DATA //
# αδιευκρ AFX_DATA # define AFX_DATA οι οδηγίες προεπεξεργαστή βεβαιωθείτε ότι οι μεταβλητές MFC και παράγωγα και εξάγονται από την επέκταση του DLL .
εικόνων εισαγωγή DLL Λειτουργίες
Η
Η άλλη πλευρά της εξαγωγής αντικειμένων από DLL είναι να τους εισάγει σε εφαρμογές που χρησιμοποιούν το " __declspec ( DllImport ) "
εικόνων Export C Λειτουργίες για χρήση σε C ή C -κλειδιά. + + εκτελέσιμα
Η
Εάν το πρόγραμμα κλήσης ή η λειτουργία είναι γραμμένο σε C + + , χρησιμοποιήστε το" extern C " οδηγία προεπεξεργαστή στην κεφαλίδα DLL εάν οι λειτουργίες DLL γραμμένο σε C.
Εδώ είναι ένα παράδειγμα ://MyDLLFunctions.h # ifdef __ cplusplusExtern "C" { # endif__declspec ( DllImport ) void MyFunc01 ( ) ? __declspec ( DllImport ) void MyFunc02 ( ) ? # ifdef __ cplusplus } //end παρένθεση για " extern C " οδηγία # endif
Ως εναλλακτική λύση για τον καθορισμό της οδηγίας « extern C " μέσα στην κεφαλίδα DLL , μπορείτε να συμπεριλάβετε το αρχείο DLL header με ένα « Συνεργαζόμενος " C " " περιτύλιγμα υπό όρους , ως εξής :
# ifdef __ cplusplusExtern "C" { # endif
# include " DllPath \\ MyDLLFunctions.h "
# ifdef __ cplusplus } //end παρένθεση για " extern C " οδηγία # endif
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα