Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 12415|Απάντηση: 1

[Γ] C++ Σύνοψη μεθόδων που αναφέρονται σε Lib και Dll

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2/7/2019 5:06:54 μ.μ. | | |
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, επισυνάψτε τον σύνδεσμο της ανάρτησης ιστολογίου για επανεκτύπωση!





Προηγούμενος:1. Δημιουργήστε το πιο πρόσφατο εκπαιδευτικό λογισμικό
Επόμενος:Γραφή τύπου LPSTR του MFC
Δημοσιεύτηκε στις 16/12/2023 1:10:26 μ.μ. |
Προτροπή:Οι συντάκτες αποκλείονται ή καταργούνται, το περιεχόμενο αποκλείεται αυτόματα
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com