1. Τι είναι ένα LIB βιβλιοθήκης στατικής σύνδεσης και τι είναι ένα DLL βιβλιοθήκης δυναμικής σύνδεσης; Τόσο οι στατικές όσο και οι δυναμικές βιβλιοθήκες συνδέσμων μοιράζονται κώδικα, και οι δύο σε δυαδική μορφή
2. Η διαφορά μεταξύ της βιβλιοθήκης στατικής σύνδεσης LIB και της βιβλιοθήκης δυναμικής σύνδεσης DLL Εάν χρησιμοποιείτε μια στατικά συνδεδεμένη βιβλιοθήκη, όλες οι οδηγίες στο lib περιλαμβάνονται απευθείας στο αρχείο EXE που προκύπτει. Η βιβλιοθήκη δυναμικής δυναμικής σύνδεσης δεν χρειάζεται να περιλαμβάνεται στο τελικό αρχείο EXE, το οποίο μπορεί να αναφερθεί "δυναμικά" και να εκφορτωθεί κατά την εκτέλεση του αρχείου EXE. Μια άλλη διαφορά είναι ότι μια βιβλιοθήκη στατικών συνδέσεων δεν μπορεί πλέον να περιέχει άλλες βιβλιοθήκες δυναμικών ή στατικών συνδέσεων, ενώ μια βιβλιοθήκη δυναμικών συνδέσεων μπορεί να περιέχει άλλες βιβλιοθήκες δυναμικών ή στατικών συνδέσεων.
3. Μέθοδος κλήσης βιβλιοθήκης στατικών συνδέσμων: Ας επιβιώσουμε για να δημιουργήσουμε ένα αρχείο lib:
VS2017--> Δημιουργία νέου έργου-->επιφάνεια εργασίας των Windows--> στατική βιβλιοθήκη, το όνομα του έργου είναι Libtest
Νέες συναρτήσεις.h και functem.cpp
functem.h:
#pragma μία φορά #include "stdafx.h" #ifndef _functem_H #define _functem_H int functem(int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
int functem(int a, int b)
{ επιστροφή a + b;
} Στη συνέχεια, δημιουργήστε το έργο και θα υπάρχουν δύο αρχεία, το Libtest.lib και το Libtest.pdb, στον κατάλογο Debug
Κατά την κλήση, απαιτούνται τρία βήματα:
1. Αντιγράψτε το Libtest.lib και το functem.h στον κατάλογο του καλούντος. όπως φαίνεται στο παρακάτω σχήμα:
2. Προσθέστε #include "functem.h" πάνω από το αρχείο cpp που καλεί
3. Προσθέστε #pragma σχόλιο (lib, "Libtest.lib") πάνω από το αρχείο cpp που καλεί
Όπως φαίνεται στο παραπάνω σχήμα, η κλήση ήταν επιτυχής.
4. Μέθοδος κλήσης βιβλιοθήκης δυναμικής σύνδεσης: Δημιουργία νέου έργου - > βιβλιοθήκη δυναμικών συνδέσεων με το όνομα του έργου Dlltest
Δημιουργήστε ένα νέο Dlltest.h:
#pragma μία φορά #ifndef __CDLL_H__ #define __CDLL_H__ extern "C" int _declspec(dllexport) add(int x, int y); #endif
Dlltest.cpp:
#include "stdafx.h" #include "Dlltest.h" int add(int x, int y)
{ επιστροφή x + y;
} Δημιουργήστε το έργο, στον κατάλογο Debug υπάρχει:
Διαδικασία κλήσης:
1. Αντιγράψτε Dlltest.dll, Dlltest.lib και Dlltest.h και αντιγράψτε τα στον κατάλογο του καλούντος. όπως φαίνεται στο παρακάτω σχήμα:
ΥΓ: Εδώ, στην πραγματικότητα, το Dlltest.lib χρησιμοποιείται μόνο κατά τη μεταγλώττιση του συνδέσμου του μεταγλωττιστή, επομένως μετά τη δημιουργία του προγράμματος, δεν μπορείτε να συμπεριλάβετε το αρχείο lib, μόνο το αρχείο dll και η πραγματική χρήση είναι στην πραγματικότητα το αρχείο dll. Εν ολίγοις, και τα τρία αρχεία πρέπει να αντιγραφούν, αλλά τα .h και .lib χρησιμοποιούνται για τη μεταγλώττιση συνδέσμων και μόνο .dll απαιτείται να τοποθετηθούν στον τελικό κατάλογο που δημιουργείται.
2. Προσθέστε #include "Dlltest.h" πάνω από το καλούμενο αρχείο cpp
3. Προσθέστε #pragma σχόλιο(lib, "Dlltest.lib") πάνω από το αρχείο cpp που καλεί
Η κλήση είναι επιτυχής! --------------------- Συγγραφέας: Bird Πηγή: CSDN Πρωτότυπο: https://blog.csdn.net/wcc27857285/article/details/84615891 Σημείωση πνευματικών δικαιωμάτων: Αυτό το άρθρο είναι ένα πρωτότυπο άρθρο του blogger, επισυνάψτε τον σύνδεσμο της ανάρτησης ιστολογίου για επανεκτύπωση!
|