Τι είναι ένα DLL;

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 815065 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο περιγράφει τι είναι μια βιβλιοθήκη δυναμικής σύνδεσης (DLL) και τα διάφορα ζητήματα που ενδέχεται να προκύψουν όταν χρησιμοποιείτε αρχεία DLL.

Στη συνέχεια, αυτό το άρθρο περιγράφει ορισμένα θέματα για προχωρημένους που πρέπει να λάβετε υπόψη όταν αναπτύσσετε το δικό σας dll. Περιγραφή τα αρχεία DLL είναι, αυτό το άρθρο περιγράφει δυναμικής σύνδεσης μεθόδους, εξαρτήσεις DLL σημεία εισόδου DLL, εξαγωγή συναρτήσεων DLL και DLL εργαλεία αντιμετώπισης προβλημάτων.

Αυτό το άρθρο ολοκληρώνει μια υψηλού επιπέδου σύγκριση DLL της Microsoft.NET Framework συγκροτήσεις.

ΕΙΣΑΓΩΓΉ

Για τα λειτουργικά συστήματα των Microsoft Windows που παρατίθενται στην ενότητα "Ισχύει για", το μεγαλύτερο μέρος της λειτουργικότητας του λειτουργικού συστήματος παρέχεται από βιβλιοθήκες δυναμικής σύνδεσης (DLL). Επιπλέον, όταν εκτελείτε μια πρόγραμμα σε ένα από αυτά τα λειτουργικά συστήματα των Windows, μεγάλο μέρος της λειτουργικότητας του το πρόγραμμα μπορεί να παρέχεται από το dll. Για παράδειγμα, μπορεί να περιέχει ορισμένα προγράμματα περιέχονται πολλές διαφορετικές λειτουργικές μονάδες και κάθε λειτουργική μονάδα του προγράμματος και κατανεμημένες στο DLL.

Χρήση του DLL συμβάλλει στην προώθηση της modularization του Κωδικός, επαναχρησιμοποίηση κώδικα, αποτελεσματική χρήση CPU και μειωμένη χώρος. Επομένως, το λειτουργικό σύστημα και τα προγράμματα φορτώνονται ταχύτερα, εκτελούνται ταχύτερα και λαμβάνουν μικρότερη ο χώρος στο δίσκο του υπολογιστή.

Όταν ένα πρόγραμμα χρησιμοποιεί ένα αρχείο DLL, ένα ζήτημα που ονομάζεται εξάρτηση μπορεί να προκαλέσει την εκτέλεση του προγράμματος δεν. Όταν ένα πρόγραμμα χρησιμοποιεί ένα DLL, δημιουργήθηκε μια εξάρτηση. Εάν κάποιο άλλο πρόγραμμα αντικαθιστά αλλαγές και αυτό εξάρτηση, το αρχικό πρόγραμμα ίσως δεν εκτελέσετε με επιτυχία.

Με το Εισαγωγή της Microsoft.NET Framework, έχουν περισσότερα προβλήματα εξάρτηση έχουν καταργηθεί χρησιμοποιώντας συγκροτήσεις.

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

Τι είναι ένα DLL;

Ένα DLL είναι μια βιβλιοθήκη που περιέχει κώδικα και δεδομένων που μπορεί να χρησιμοποιηθεί από περισσότερα από ένα προγράμματα ταυτόχρονα. Για παράδειγμα, στο λειτουργικό Windows συστήματα, το DLL Comdlg32 εκτελεί κοινό παράθυρο διαλόγου πλαίσιο σχετικές λειτουργίες. Επομένως, κάθε πρόγραμμα μπορεί να χρησιμοποιήσει τη λειτουργικότητα που περιέχονται σε αυτό το DLL Για να υλοποιήσετε μια Άνοιγμα στο παράθυρο διαλόγου. Αυτό βοηθά να προωθούν την επαναχρησιμοποίηση του κώδικα και αποτελεσματική χρήση CPU.

Χρησιμοποιώντας ένα αρχείο DLL, μπορεί να είναι ένα πρόγραμμα modularized σε ξεχωριστά στοιχεία. Για παράδειγμα, μπορεί να είναι ένα πρόγραμμα λογιστικής πωλείται από λειτουργική μονάδα. Κάθε λειτουργική μονάδα μπορεί να μεταφερθεί σε κύριο πρόγραμμα κατά το χρόνο εκτέλεσης εάν λειτουργική μονάδα που είναι εγκατεστημένη. Επειδή οι λειτουργικές μονάδες είναι ξεχωριστό, το χρόνο φόρτωσης το πρόγραμμα είναι ταχύτερη και μια λειτουργική μονάδα φορτώνεται μόνο όταν αυτή η λειτουργία είναι ζητήθηκε.

Επιπλέον, οι ενημερωμένες εκδόσεις είναι ευκολότερο να ισχύουν για κάθε λειτουργική μονάδα χωρίς να επηρεαστούν τα άλλα μέρη του προγράμματος. Για παράδειγμα, μπορεί να έχετε ένα πρόγραμμα μισθοδοσίας και συντελεστές φόρου αλλάζουν κάθε χρόνο. Όταν αυτές οι αλλαγές είναι Ιδιαίτερο DLL, μπορείτε να εφαρμόσετε μια ενημερωμένη έκδοση χωρίς να χρειάζεται να δημιουργήσετε ή να εγκαταστήσετε το όλο πρόγραμμα ξανά.

Η παρακάτω λίστα περιγράφει ορισμένες από τις αρχεία που υλοποιούνται ως DLL σε λειτουργικά συστήματα των Windows:
  • Αρχεία στοιχείων ελέγχου ActiveX (.ocx)
    Ένα παράδειγμα ενός στοιχείου ελέγχου ActiveX είναι ένα ημερολόγιο που ελέγχουν σας επιτρέπει να επιλέξετε μια ημερομηνία από ένα ημερολόγιο.
  • Αρχεία (.cpl) του πίνακα ελέγχου
    Ένα παράδειγμα ενός αρχείου .cpl είναι ένα στοιχείο που βρίσκεται στο Πίνακας ελέγχου. Κάθε στοιχείο είναι ένα εξειδικευμένο αρχείο DLL.
  • Αρχεία (.drv) προγραμμάτων οδήγησης συσκευών
    Ένα παράδειγμα ενός προγράμματος οδήγησης συσκευής είναι ένα πρόγραμμα οδήγησης εκτυπωτή που ελέγχει την εκτύπωση σε εκτυπωτή.

DLL πλεονεκτήματα

Η παρακάτω λίστα περιγράφει ορισμένα από τα πλεονεκτήματα που παρέχονται όταν ένα πρόγραμμα χρησιμοποιεί ένα αρχείο DLL:
  • Χρησιμοποιεί λιγότερους πόρους
    Όταν πολλά προγράμματα χρησιμοποιούν την ίδια βιβλιοθήκη συναρτήσεων, μια DLL μπορεί να μειώσει την αναπαραγωγή του κώδικα που φορτώνεται στο δίσκο και στο φυσική μνήμη. Σε μεγάλο βαθμό αυτό μπορούν να επηρεάσουν τις επιδόσεις του όχι μόνο την πρόγραμμα που εκτελείται στο προσκήνιο, αλλά επίσης και άλλα προγράμματα που είναι εκτελείται σε λειτουργικό σύστημα Windows.
  • Προβιβάζει αρθρωτή αρχιτεκτονική
    Ένα αρχείο DLL σας βοηθά να προωθούν την ανάπτυξη προγραμμάτων αρθρωτή. Αυτό βοηθά ανάπτυξη μεγάλα προγράμματα που απαιτούν πολλές εκδόσεις γλώσσας ή ένα πρόγραμμα που απαιτεί αρθρωτή αρχιτεκτονική. Ένα παράδειγμα αρθρωτή πρόγραμμα είναι ένα πρόγραμμα λογιστικής που έχει πολλές λειτουργικές μονάδες που μπορεί να φορτωθεί δυναμικά σε εκτέλεση ώρα.
  • Διευκολύνει ανάπτυξης και εγκατάστασης
    Όταν μια συνάρτηση σε ένα αρχείο DLL χρειάζεται μια ενημερωμένη έκδοση ή μια ενημέρωση κώδικα του ανάπτυξης και εγκατάστασης του αρχείου DLL δεν απαιτεί να είναι το πρόγραμμα επανασύνδεση με το DLL. Επιπλέον, εάν πολλά προγράμματα χρησιμοποιούν το ίδιο αρχείο DLL του πολλά προγράμματα όλα θα ωφεληθούν από την ενημερωμένη έκδοση ή την ενημέρωση κώδικα. Αυτό το ζήτημα μπορεί να πιο συχνά παρουσιάζονται όταν χρησιμοποιείτε ένα DLL τρίτων κατασκευαστών που ενημερώνεται τακτικά ή σταθερό.

Εξαρτήσεις DLL

Όταν ένα πρόγραμμα ή ένα αρχείο DLL χρησιμοποιεί μια συνάρτηση DLL στο άλλο DLL ενός Δημιουργία εξάρτησης. Επομένως, το πρόγραμμα δεν είναι πλέον αυτόνομη, και το πρόγραμμα ενδέχεται να αντιμετωπίσετε προβλήματα εάν η εξάρτηση είναι κατεστραμμένες. Για παράδειγμα, το πρόγραμμα ενδέχεται να μην λειτουργούν, εάν ισχύει μία από τις ακόλουθες ενέργειες:
  • Εξαρτημένα DLL αναβαθμίζεται σε μια νέα έκδοση.
  • Εξαρτημένα DLL είναι σταθερή.
  • Εξαρτημένα DLL αντικαθίσταται με μια παλαιότερη έκδοση.
  • Εξαρτημένα DLL καταργείται από τον υπολογιστή.
Αυτές οι ενέργειες γενικά γνωστό ως διενέξεις DLL. Εάν με παλαιότερες εκδόσεις συμβατότητα είναι επιβεβλημένη, το πρόγραμμα ενδέχεται να μην με επιτυχία εκτέλεση.

Η παρακάτω λίστα περιγράφει τις αλλαγές που έχουν εισάγονται στα Microsoft Windows 2000 και νεότερα λειτουργικά συστήματα των Windows για να Βοήθεια για ελαχιστοποίηση εξάρτηση ζητήματα:
  • Προστασία αρχείων των Windows
    Προστασία αρχείων των Windows, δεν επιτρέπει στο λειτουργικό σύστημα σύστημα dll από ενημέρωση ή διαγραφή από μη εξουσιοδοτημένο παράγοντα. Επομένως, Όταν ένα πρόγραμμα εγκατάστασης προσπαθεί να καταργήσετε ή να ενημερώσετε ένα αρχείο DLL που ορίζεται ως σύστημα DLL, προστασία αρχείων των Windows θα αναζητήσει μια έγκυρη ψηφιακή η υπογραφή.
  • Ιδιωτικά αρχεία dll
    DLL του ιδιωτικού σας επιτρέπουν να απομονώσετε το πρόγραμμα από αλλαγές που είναι που έγιναν σε κοινόχρηστο DLL ιδιωτικού dll. Χρησιμοποιήστε πληροφορίες για την έκδοση ή μια κενή το αρχείο .local για να επιβάλετε την έκδοση του αρχείου DLL που χρησιμοποιείται από το πρόγραμμα. Για να Χρήση ιδιωτικού dll, εντοπίστε το dll στο ριζικό φάκελο του προγράμματος. Στη συνέχεια, για νέα προγράμματα, προσθέσετε πληροφορίες για την έκδοση του αρχείου DLL. Για τα παλιά προγράμματα χρησιμοποιούν ένα το αρχείο .local κενό. Κάθε μέθοδος ενημερώνει το λειτουργικό σύστημα για να χρησιμοποιήσετε το ιδιωτικό DLL που βρίσκονται στον ριζικό φάκελο του προγράμματος.

DLL εργαλεία αντιμετώπισης προβλημάτων

Διάφορα εργαλεία που είναι διαθέσιμα για την αντιμετώπιση προβλημάτων DLL. Τα ακόλουθα εργαλεία είναι ορισμένα από αυτά τα εργαλεία.

Εξάρτηση Walker

Η σάρωση αναδρομικά εξάρτηση Walker εργαλείο μπορούν για όλα εξαρτώνται από DLL που χρησιμοποιούνται από ένα πρόγραμμα. Όταν ανοίγετε ένα πρόγραμμα σε Walker εξάρτηση Εξάρτηση Walker εκτελεί τους ακόλουθους ελέγχους:
  • Εξάρτηση Walker ελέγχει για αρχεία DLL που λείπουν.
  • Εξάρτηση Walker ελέγχει για αρχεία προγραμμάτων ή DLL που χρησιμοποιούνται δεν είναι έγκυρη.
  • Walker εξάρτηση που ελέγχει λειτουργίες εισαγωγής και εξαγωγής συναρτήσεις ταιριάζουν.
  • Εξάρτηση Walker ελέγχει για κυκλική εξάρτηση σφάλματα.
  • Εξάρτηση Walker ελέγχει για λειτουργικές μονάδες που δεν είναι έγκυρες Επειδή οι λειτουργικές μονάδες είναι για ένα διαφορετικό λειτουργικό σύστημα.
Με τη χρήση Walker εξάρτηση, μπορείτε να τεκμηριώσετε όλα τα αρχεία DLL που μια χρησιμοποιεί το πρόγραμμα. Αυτό μπορεί να συμβάλλουν στην αποτροπή και διόρθωση προβλημάτων DLL που ενδέχεται να παρουσιαστεί σε στο μέλλον. Εξάρτηση Walker βρίσκεται στον ακόλουθο κατάλογο όταν κάνετε Εγκαταστήστε το Microsoft Visual Studio 6.0:
μονάδα δίσκου\Program Files\Microsoft visual Studio\Common\Tools

DLL Universal επίλυσης προβλήματος

Το εργαλείο DLL Universal επίλυση προβλήματος (DUPS) χρησιμοποιείται για τον έλεγχο, Σύγκριση εγγράφων, και να εμφανίσετε πληροφορίες DLL. Η ακόλουθη λίστα περιγράφει τα βοηθητικά προγράμματα που αποτελούν το εργαλείο DUPS:
  • Dlister.exe
    Αυτό το βοηθητικό πρόγραμμα απαριθμεί όλα τα αρχεία dll στον υπολογιστή και αρχεία καταγραφής Οι πληροφορίες σε ένα αρχείο κειμένου ή σε ένα αρχείο βάσης δεδομένων.
  • Dcomp.exe
    Αυτό το βοηθητικό πρόγραμμα συγκρίνει τα αρχεία DLL που αναφέρονται σε δύο κειμένου αρχεία και παράγει ένα τρίτο αρχείο κειμένου που περιέχει τις διαφορές.
  • Dtxt2DB.exe
    Αυτό το βοηθητικό πρόγραμμα φορτώνει τα αρχεία κειμένου που δημιουργούνται με χρήση το βοηθητικό πρόγραμμα Dlister.exe και το βοηθητικό πρόγραμμα Dcomp.exe σε dllHell του βάση δεδομένων.
  • DlgDtxt2DB.exe
    Αυτό το βοηθητικό πρόγραμμα παρέχει ένα περιβάλλον εργασίας χρήστη με γραφικά (GUI) η έκδοση του βοηθητικού προγράμματος Dtxt2DB.exe.
Για περισσότερες πληροφορίες σχετικά με το εργαλείο DUPS, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
247957Χρήση DUPS.exe για να επιλύσετε προβλήματα συμβατότητας DLL

Ανάπτυξη DLL

Αυτή η ενότητα περιγράφει τις απαιτήσεις και τα θέματα που πρέπει να λάβετε υπόψη όταν αναπτύξει δικά σας αρχεία DLL.

Τύποι dll

Όταν φορτώνετε ένα DLL σε μια εφαρμογή, δύο μέθοδοι επιτρέπουν σύνδεση Καλέστε το εξαγόμενο συναρτήσεις DLL. Οι δύο μέθοδοι σύνδεσης είναι χρόνο φόρτωσης δυναμική σύνδεση και χρόνου εκτέλεσης δυναμικής σύνδεσης.
Δυναμική σύνδεση χρόνο φόρτωσης
Στο χρόνο φόρτωσης δυναμικής σύνδεσης, μια εφαρμογή πραγματοποιεί κλήσεις ρητή Για να εξαχθεί DLL λειτουργίες όπως τοπικές λειτουργίες. Για να χρησιμοποιήσετε δυναμικό φορτίο χρόνου σύνδεση, παρέχουν μια κεφαλίδα (.h) αρχείο και μια εισαγωγή βιβλιοθήκη (.lib) αρχείου όταν κάνετε μεταγλώττιση και σύνδεσης της εφαρμογής. Όταν το κάνετε αυτό, το πρόγραμμα σύνδεσης θα παρέχει το σύστημα με τις πληροφορίες που απαιτούνται για τη φόρτωση του αρχείου DLL και να επιλύσετε το εξαγωγή θέσεις συνάρτηση DLL κατά τη φόρτωση.
Δυναμική σύνδεση χρόνου εκτέλεσης
Στο χρόνο εκτέλεσης δυναμικής σύνδεσης, μια εφαρμογή καλέσει είτε το Φόρτωση βιβλιοθήκης συνάρτηση ή το LoadLibraryEx συνάρτηση φόρτωση του αρχείου DLL κατά το χρόνο εκτέλεσης. Μετά το DLL φορτώθηκε με επιτυχία, μπορείτε να χρησιμοποιήσετε το GetProcAddress συνάρτηση για να αποκτήσετε τη διεύθυνση του εξαγόμενου αρχείου DLL που λειτουργούν θέλετε να καλέσετε. Όταν χρησιμοποιείτε τη δυναμική σύνδεση χρόνου εκτέλεσης, δεν χρειάζεται μια Εισαγάγετε το αρχείο βιβλιοθήκης.

Η ακόλουθη λίστα περιγράφει την εφαρμογή κριτήρια για το πότε χρησιμοποιείται δυναμική σύνδεση χρόνο φόρτωσης και πότε χρησιμοποιείται χρόνου εκτέλεσης δυναμική σύνδεση:
  • Απόδοση εκκίνησης
    Εάν είναι η αρχική εκκίνηση απόδοση της εφαρμογής σημαντικό, θα πρέπει να χρησιμοποιήσετε τη δυναμική σύνδεση χρόνου εκτέλεσης.
  • Ευκολία χρήσης
    Σε χρόνο φόρτωσης δυναμικής σύνδεσης, το εξαγόμενο συναρτήσεις DLL είναι όπως τοπικές λειτουργίες. Αυτό σας διευκολύνει να καλέσετε αυτές συναρτήσεις.
  • Λογική εφαρμογής
    Στο χρόνο εκτέλεσης δυναμικής σύνδεσης, να διακλάδωση μιας εφαρμογής για η φόρτωση του διαφορετικές λειτουργικές μονάδες, όπως απαιτείται. Αυτό είναι σημαντικό, κατά την ανάπτυξη εκδόσεις πολλών γλωσσών.

Το σημείο εισόδου DLL

Όταν δημιουργείτε ένα αρχείο DLL, μπορείτε προαιρετικά να καθορίσετε ένα σημείο καταχώρησης η συνάρτηση. Τη συνάρτηση σημείου εισόδου καλείται όταν επισυνάψετε διεργασίες ή νήματα οι ίδιες για το αρχείο DLL ή οι ίδιοι να αποσπασθεί από το DLL. Μπορείτε να χρησιμοποιήσετε το συνάρτησης σημείου εισόδου για την προετοιμασία των δομών δεδομένων ή την καταστροφή δεδομένων δομές όπως απαιτείται από το αρχείο DLL. Επιπλέον, εάν η εφαρμογή είναι πολυνηματική, μπορείτε να χρησιμοποιήσετε το νήμα τοπικής αποθήκευσης (TLS) για την εκχώρηση μνήμης που είναι ιδιωτικό κάθε νήμα της συνάρτησης σημείου εισόδου. Ο ακόλουθος κώδικας αποτελεί ένα παράδειγμα της συνάρτησης σημείου εισόδου DLL.
BOOL APIENTRY DllMain(
HANDLE hModule,	// Handle to DLL module
	DWORD ul_reason_for_call,	// Reason for calling function
	LPVOID lpReserved ) // Reserved
{
	switch ( ul_reason_for_call )
	{
		case DLL_PROCESS_ATTACHED:
		// A process is loading the DLL.
		break;
		case DLL_THREAD_ATTACHED:
		// A process is creating a new thread.
		break;
		case DLL_THREAD_DETACH:
		// A thread exits normally.
		break;
		case DLL_PROCESS_DETACH:
		// A process unloads the DLL.
		break;
	}
	return TRUE;
}
Όταν αποδίδει τη συνάρτηση σημείου εισόδου σε FALSE τιμή, η εφαρμογή θα ξεκινήσει εάν χρησιμοποιείτε το χρόνο φόρτωσης δυναμική σύνδεση. Εάν χρησιμοποιείτε χρόνου εκτέλεσης δυναμικής σύνδεσης, μόνο τα μεμονωμένα Δεν θα φορτώσει το DLL.

Θα πρέπει να εκτελέσετε μόνο απλό τη συνάρτηση σημείου εισόδου Προετοιμασία εργασίες και πρέπει να καλέσετε άλλες φόρτωσης DLL ή τερματισμού συναρτήσεις. Για παράδειγμα, με τη συνάρτηση σημείου εισόδου, θα πρέπει να μην απευθείας ή έμμεσα καλέστε το Φόρτωση βιβλιοθήκης συνάρτηση ή το LoadLibraryEx η συνάρτηση. Επιπλέον, δεν θα πρέπει να καλέσετε το FreeLibrary η συνάρτηση κατά τον τερματισμό της διαδικασίας.

Σημείωση Σε εφαρμογές πολλαπλών νημάτων, βεβαιωθείτε ότι η access για το DLL Συγχρονισμός καθολικά δεδομένα (ασφαλή νήμα) για να αποφύγετε την καταστροφή δεδομένων είναι δυνατό. Για να κάνετε αυτό, χρησιμοποιήστε το TLS για να παρέχετε δεδομένα μοναδικά για κάθε νήμα.

Εξαγωγή λειτουργιών της DLL

Για να εξαγάγετε DLL λειτουργίες, μπορείτε είτε να προσθέσετε μια λέξη-κλειδί συνάρτηση για να το εξαγόμενο αρχείο DLL, συναρτήσεις ή δημιουργήστε ένα αρχείο ορισμού (μονάδας.def) λειτουργική μονάδα που παραθέτει εξαγωγή συναρτήσεων DLL.

Για να χρησιμοποιήσετε μια συνάρτηση, τη λέξη-κλειδί, πρέπει να Δηλώστε κάθε συνάρτηση που θέλετε να εξαγάγετε με την ακόλουθη λέξη-κλειδί:
__declspec(dllexport)
Για να χρησιμοποιήσετε συναρτήσεις εξαγόμενο αρχείο DLL της εφαρμογής που πρέπει να δηλώνουν κάθε συνάρτηση που θέλετε να εισαγάγετε με την ακόλουθη λέξη-κλειδί:
__declspec(DllImport)
Συνήθως, μπορείτε να χρησιμοποιήσετε ένα αρχείο κεφαλίδας που έχει ένα Ορισμός δήλωση και ένα ifdef δήλωση για το διαχωρισμό της δήλωσης εξαγωγής και εισαγωγής η πρόταση.

Μπορείτε επίσης να χρησιμοποιήσετε ένα αρχείο καθορισμού λειτουργικής μονάδας για τη δήλωση συναρτήσεις εξαγόμενο αρχείο DLL. Όταν χρησιμοποιείτε ένα αρχείο καθορισμού λειτουργικής μονάδας, δεν έχετε Για να προσθέσετε τη λέξη-κλειδί συνάρτηση εξαγόμενο συναρτήσεις DLL. Στη λειτουργική μονάδα αρχείο ορισμού, μπορείτε να δηλώσετε το ΒΙΒΛΙΟΘΉΚΗ δήλωση και το ΕΞΑΓΩΓΈΣ δήλωση για το αρχείο DLL. Ο ακόλουθος κώδικας αποτελεί παράδειγμα ενός αρχείο ορισμού.
// SampleDLL.def
//
LIBRARY "sampleDLL"

EXPORTS
  HelloWorld

Δείγμα DLL και εφαρμογή

Στο Microsoft Visual C++ 6.0, μπορείτε να δημιουργήσετε ένα αρχείο DLL, επιλέγοντας είτε το Βιβλιοθήκη δυναμικής σύνδεσης Win32 Τύπος έργου ή το AppWizard MFC (dll) Τύπος έργου.

Ο παρακάτω κώδικας είναι ένα παράδειγμα ενός DLL που δημιουργήθηκε σε Visual C++, χρησιμοποιώντας το Βιβλιοθήκη δυναμικής σύνδεσης Win32 Τύπος έργου.
// SampleDLL.cpp
//

#include "stdafx.h"
#define EXPORTING_DLL
#include "sampleDLL.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

void HelloWorld()
{
	MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);
}
// File: SampleDLL.h
//
#ifndef INDLL_H
#define INDLL_H

#ifdef EXPORTING_DLL
extern __declspec(dllexport) void HelloWorld() ;
#else
extern __declspec(dllimport) void HelloWorld() ;
#endif

#endif
Ο ακόλουθος κώδικας αποτελεί παράδειγμα ενός Win32 Εφαρμογή έργο που καλεί τη συνάρτηση DLL εξάγεται σε το SampleDLL DLL.
// SampleApp.cpp 
//

#include "stdafx.h"
#include "sampleDLL.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{ 	
	HelloWorld();
	return 0;
}
Σημείωση Φόρτωση ώρα δυναμική σύνδεση, πρέπει να συνδέσετε το SampleDLL.lib Εισαγωγή βιβλιοθήκης που δημιουργείται κατά τη δημιουργία του SampleDLL το έργο.

Σε χρόνο εκτέλεσης δυναμικής σύνδεσης, μπορείτε να χρησιμοποιήσετε κώδικα που είναι παρόμοια με ο παρακάτω κώδικας για την κλήση του SampleDLL.dll εξάγονται συνάρτηση DLL.
...
typedef VOID (*DLLPROC) (LPTSTR);
...
HINSTANCE hinstDLL;
DLLPROC HelloWorld;
BOOL fFreeDLL;

hinstDLL = LoadLibrary("sampleDLL.dll");
if (hinstDLL != NULL)
{
    HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");
    if (HelloWorld != NULL)
        (HelloWorld);

    fFreeDLL = FreeLibrary(hinstDLL);
}
...
Όταν μεταγλώττιση και σύνδεση της εφαρμογής SampleDLL, τα Windows το λειτουργικό σύστημα αναζητά το DLL SampleDLL στις εξής θέσεις στο Αυτή η σειρά:
  1. Στο φάκελο της εφαρμογής
  2. Ο τρέχων φάκελος
  3. Το φάκελο συστήματος των Windows

    Σημείωση Το GetSystemDirectory η συνάρτηση επιστρέφει τη διαδρομή του συστήματος των Windows ο φάκελος.
  4. Ο φάκελος των Windows

    Σημείωση Το GetWindowsDirectory η συνάρτηση επιστρέφει τη διαδρομή του φακέλου των Windows.

Το.NET Framework συγκρότησης

Με την εισαγωγή της Microsoft.NET και το.NET Framework, Αφού εξαλειφθούν από περισσότερα προβλήματα που σχετίζονται με αρχεία dll χρήση συγκροτήσεων. Μια συγκρότηση είναι μια λογική μονάδα λειτουργικότητα που εκτελείται υπό τον έλεγχο του.NET κοινού χρόνου εκτέλεσης γλώσσας (CLR). Μια συγκρότηση φυσικά υπάρχει ως ένα αρχείο .dll ή ενός αρχείου .exe. Ωστόσο, εσωτερικά ένα η συγκρότηση είναι πολύ διαφορετικό από ένα DLL Microsoft Win32.

Μια συγκρότηση το αρχείο περιέχει διακήρυξη συγκρότησης, τύπος μετα-δεδομένων Microsoft ενδιάμεση κωδικός γλώσσας (MSIL δεν) και άλλους πόρους. Περιέχει διακήρυξη συγκρότησης του συγκρότησης μετα-δεδομένων που παρέχει όλες τις πληροφορίες που απαιτούνται για ένα η συγκρότηση είναι αυτοπεριγράφονται. Οι ακόλουθες πληροφορίες περιλαμβάνονται σε το διακήρυξη συγκρότησης:
  • Όνομα συγκρότησης
  • Πληροφορίες έκδοσης
  • Πληροφορίες κουλτούρα
  • Πληροφορίες ισχυρό όνομα
  • Η συγκρότηση λίστα αρχείων
  • Πληροφορίες για τον τύπο αναφοράς
  • Πληροφορίες αναφοράς και την εξαρτώμενη συγκρότηση
Δεν είναι δυνατή η MSIL δεν κώδικα που περιέχεται σε συγκρότηση εκτελεστούν άμεσα. Αντίθετα, εκτέλεση κώδικα MSIL δεν γίνεται μέσω του CLR. Από προεπιλογή, όταν δημιουργείτε μια συγκρότηση της συγκρότησης είναι ιδιωτική με το εφαρμογή. Για να δημιουργήσετε μια κοινόχρηστη συγκρότηση απαιτεί να εκχωρείτε ισχυρό όνομα η συγκρότηση και στη συνέχεια δημοσιεύστε τη συγκρότηση στη συγκρότηση καθολικού μνήμη cache.

Η παρακάτω λίστα περιγράφει ορισμένες από τις δυνατότητες των συγκροτημάτων σε σύγκριση με τις δυνατότητες του Win32 DLL:
  • Self-describing
    Όταν δημιουργείτε μια συγκρότηση, όλες τις πληροφορίες που είναι Για να εκτελεστεί η συγκρότηση CLR περιέχεται στη διακήρυξη συγκρότησης. Η διακήρυξη συγκρότησης περιέχει μια λίστα εξαρτημένες συγκροτήσεις. Επομένως, το CLR μπορούν να διατηρήσουν ένα συνεπές σύνολο συγκροτήσεις που χρησιμοποιούνται σε το εφαρμογή. Στο DLL Win32 δεν είναι δυνατό να διατηρήσετε τη συνέπεια μεταξύ ενός συνόλου DLL που χρησιμοποιούνται σε μια εφαρμογή, όταν χρησιμοποιείτε κοινόχρηστα αρχεία DLL.
  • Τήρηση ιστορικού εκδόσεων
    Σε μια διακήρυξη συγκρότησης καταγράφονται πληροφορίες έκδοσης και επιβάλλεται από το CLR. Επιπλέον, πολιτικές έκδοσης σας επιτρέπουν να επιβάλλετε χρήση συγκεκριμένη έκδοση. Στο Win32 dll, τήρηση ιστορικού εκδόσεων δεν μπορεί να εφαρμοστεί από το λειτουργικό σύστημα. Αντίθετα, πρέπει να βεβαιωθείτε ότι ότι το dll είναι πίσω συμβατό.
  • Ανάπτυξη πλάι-πλάι
    Συγκροτήσεις υποστηρίζει ανάπτυξης με παράθεση. Μία εφαρμογή να χρησιμοποιήσετε μία έκδοση μιας συγκρότησης και μια άλλη εφαρμογή μπορεί να χρησιμοποιήσει ένα διαφορετικό έκδοση συγκρότησης. Εκκίνηση στα Windows 2000, είναι ανάπτυξης πλάι-πλάι υποστηρίζεται από τον εντοπισμό dll στο φάκελο της εφαρμογής. Επιπλέον, τα Windows Προστασία αρχείων εμποδίζει σύστημα DLL να αντικατασταθούν ή να αντικατασταθεί από ένα μη εξουσιοδοτημένο παράγοντα.
  • Απομόνωση και Self-containment
    Μπορεί να είναι μια εφαρμογή που αναπτύχθηκε με χρήση μιας συγκρότησης ανεξάρτητη και απομονωμένο από άλλες εφαρμογές που εκτελούνται στον το υπολογιστής. Αυτή η δυνατότητα σάς βοηθά να δημιουργήσετε μηδέν επιπτώσεων εγκαταστάσεων.
  • Εκτέλεση
    Μια συγκρότηση που εκτελείται με τα δικαιώματα ασφαλείας που είναι παρέχονται στη συγκρότηση διακήρυξη και που ελέγχονται από το CLR.
  • Ανεξάρτητο γλώσσας
    Μια συγκρότηση μπορούν να αναπτυχθούν χρησιμοποιώντας οποιοδήποτε από τα υποστηρίζεται.NET γλώσσες. Για παράδειγμα, μπορείτε να αναπτύξετε μια συγκρότηση στο Microsoft Visual C#, και στη συνέχεια χρησιμοποιήστε τη συγκρότηση μια Microsoft Visual Basic.NET το έργο.

Αναφορές

Για περισσότερες πληροφορίες σχετικά με αρχεία dll και το.NET Framework συγκροτήσεις, επισκεφθείτε τις ακόλουθες τοποθεσίες της Microsoft στο Web:
DLL διενέξεις
http://msdn2.Microsoft.com/en-us/library/ms811694.aspx

Εφαρμογή στοιχείου με παράθεση κοινής χρήσης εφαρμογών
http://msdn2.Microsoft.com/en-us/library/ms811700.aspx

Τρόπος δημιουργίας και υπηρεσία ιδιαίτερο εφαρμογές και συγκροτήσεις side-by-side για τα Windows XP
http://msdn2.Microsoft.com/en-us/library/ms997620.aspx

Απλοποίηση της ανάπτυξης και την επίλυση DLL συμπίπτει με το.NET Framework
http://msdn2.Microsoft.com/en-US/netframework/aa497268.aspx

Το.Οδηγός για προγραμματιστές NET Framework: συγκροτήσεις
.aspx http://msdn2.Microsoft.com/en-us/library/hk5f40ct (vs.71)

Δυναμική σύνδεση χρόνου εκτέλεσης
http://msdn2.Microsoft.com/en-us/library/ms685090.aspx

Τοπικού χώρου αποθήκευσης νήματος
http://msdn2.Microsoft.com/en-us/library/ms686749.aspx

Ιδιότητες

Αναγν. άρθρου: 815065 - Τελευταία αναθεώρηση: Κυριακή, 29 Μαΐου 2011 - Αναθεώρηση: 4.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Server
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Media Center Edition 2005 Update Rollup 2
  • Microsoft Windows XP Tablet PC Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Studio 6.0 Professional Edition
  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Office XP Professional Edition
  • Microsoft Office XP Small Business Edition
  • Microsoft Office XP Standard Edition
  • Microsoft Office Professional Edition 2003
  • Microsoft Office Small Business Edition 2003
Λέξεις-κλειδιά: 
kbxplatform kbtshoot kbdebug kbdll kbinfo kbmt KB815065 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:815065

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com