Λαμβάνετε ένα μήνυμα λάθους του LNK4197 στην έκδοση 64-bit από το πρόγραμμα μεταγλώττισης Visual C++

Εσωτερικές πληροφορίες υποστήριξης της Microsoft

Σφάλμα #: 101959 (Visual Studio)

Σύνοψη

Όταν δημιουργείτε ένα αρχείο DLL, χρησιμοποιώντας την έκδοση 64-bit, το πρόγραμμα μεταγλώττισης Microsoft Visual C++ και το πρόγραμμα σύνδεσης, ενδέχεται να εμφανιστεί το πρόγραμμα σύνδεσης αριθμός σφάλματος LNK4197 εάν μια συνάρτηση που έχει δηλωθεί για εξαγωγή περισσότερες από μία φορές.

Συμπτώματα

Το πρόγραμμα σύνδεσης εξόδου μπορεί να είναι παρόμοιο με το ακόλουθο:

C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 

Αιτία

Το πρόγραμμα σύνδεσης αριθμός σφάλματος LNK4197 δημιουργείται όταν μια συνάρτηση έχει δηλωθεί για εξαγωγή περισσότερες από μία φορές. Μια συνάρτηση έχει δηλωθεί για εξαγωγή σε έναν από τους παρακάτω τρόπους:

  • Η συνάρτηση δηλωθεί, χρησιμοποιώντας τη λέξη-κλειδί __declspec(dllexport) στο αρχείο προέλευσης "C":

    __declspec(dllexport) int DllSample() {   return 42;}
  • Η συνάρτηση δηλωθεί χρησιμοποιώντας ένα καθορισμού λειτουργικής μονάδας (. Αρχείο DEF):

    EXPORTS   DllSample

Αυτό το πρόγραμμα σύνδεσης σφάλμα παρουσιάζεται πιο συχνά όταν τόσο τη λέξη κλειδί __declspec(dllexport) και ένα. Αρχείο Ανάλυσης χρησιμοποιούνται για να ορίσουν το ίδιο όνομα συνάρτησης σε ένα. Το έργο DLL.

Επίλυση

Για να επιλύσετε αυτήν τη συμπεριφορά, ορίστε εξαγόμενο συναρτήσεις μόνο μία φορά, είτε χρησιμοποιώντας τη λέξη-κλειδί __declspec(dllexport) ή χρησιμοποιώντας ένα. Αρχείο Ανάλυσης. Μην χρησιμοποιήσετε και τις δύο από αυτές τις μεθόδους.

Κατάσταση

Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.

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

Η δήλωση μιας συνάρτησης για εξαγωγή περισσότερες από μία φορές δεν μπορεί να παράγει το σφάλμα πρόγραμμα σύνδεσης που περιγράφεται στην ενότητα "Συμπτώματα" αυτού του άρθρου σε εκδόσεις 32-bit του Microsoft Windows C++ μεταγλωττιστή και πρόγραμμα σύνδεσης. Ωστόσο, η Microsoft συνιστά να ορίσετε εξαγωγές συνάρτηση μόνο μία φορά σε εκδόσεις 32-bit και 64-bit των Windows C++ μεταγλωττιστή και πρόγραμμα σύνδεσης.

Χρειάζεστε περισσότερη βοήθεια;

Αναπτύξτε τις δεξιότητές σας
Εξερευνήστε το περιεχόμενο της εκπαίδευσης
Αποκτήστε πρώτοι τις νέες δυνατότητες
Συμμετοχή στο Microsoft Insider

Σας βοήθησαν αυτές οι πληροφορίες;

Σας ευχαριστούμε για τα σχόλιά σας!

Σας ευχαριστούμε για τα σχόλιά σας! Φαίνεται ότι μπορεί να είναι χρήσιμο να συνδεθείτε με έναν από τους συνεργάτες υποστήριξης του Office.

×