Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 12415|Antwoord: 1

[C] C++ Samenvatting van methoden die verwijzen naar Lib en Dll

[Link kopiëren]
Geplaatst op 02-07-2019 17:06:54 | | |
1. Wat is een statische verbindingsbibliotheek (LIB) en wat is een dynamische linkbibliotheek (DLL)?     
Zowel statische als dynamische linkbibliotheken delen code, beide in binair formaat



2. Het verschil tussen statische linkbibliotheek LIB en dynamische linkbibliotheek DLL
Als je een statisch gekoppelde bibliotheek gebruikt, worden alle instructies in de bibliotheek direct opgenomen in het resulterende EXE-bestand. De dynamische dynamische linkbibliotheek hoeft niet in het uiteindelijke EXE-bestand te worden opgenomen, dat "dynamisch" kan worden verwezen en verwijderd wanneer het EXE-bestand wordt uitgevoerd. Een ander verschil is dat een statische linkbibliotheek geen andere dynamische of statische linkbibliotheken meer kan bevatten, terwijl een dynamische linkbibliotheek andere dynamische of statische linkbibliotheken kan bevatten.



3. Statische link bibliotheek aanroepmethode:
Laten we overleven om een lib-bestand te genereren:

VS2017--> Maak een nieuw project aan—>Windows desktop—> statische bibliotheek, de projectnaam is Libtest.



Nieuwe functem.h en functem.cpp

functem.h:

#pragma één keer
#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)
{
        Geef A + B terug;
}
Genereer vervolgens het project, en er zullen twee bestanden zijn, Libtest.lib en Libtest.pdb, in de Debug-map

Bij het bellen zijn drie stappen vereist:

1. Kopieer Libtest.lib en functem.h naar de directory van de aanroeper; zoals weergegeven in de onderstaande figuur:



2. Voeg #include "functem.h" toe boven het aanroepende cpp-bestand

3. Voeg #pragma commentaar (lib, "Libtest.lib") toe boven het aanroepende cpp-bestand



Zoals te zien is in de bovenstaande figuur, is de call succesvol geweest.



4. Dynamische link bibliotheek aanroepmethode:
Maak een nieuw project aan - > dynamische linkbibliotheek met de projectnaam Dlltest

Maak een nieuwe Dlltest.h:

#pragma één keer
#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)
{
        return x + y;
}
Genereer het project, in de Debug-map staat het volgende:



Oproepproces:

1. Kopieer Dlltest.dll, Dlltest.lib en Dlltest.h en kopieer deze naar de directory van de aanroeper; zoals weergegeven in de onderstaande figuur:



PS: Hier wordt Dlltest.lib eigenlijk alleen gebruikt bij het compileren van de compilerlink, dus nadat het programma is gegenereerd, kun je het libbestand niet toevoegen, alleen het dll-bestand, en het echte gebruik is eigenlijk het dll-bestand. Kortom, alle drie de bestanden moeten worden gekopieerd, maar .h en .lib worden gebruikt om links te compileren en alleen .dll hoeven in de uiteindelijk gegenereerde map te worden geplaatst.

2. Voeg #include "Dlltest.h" toe boven het aangeroepen cpp-bestand

3. Voeg #pragma commentaar (lib, "Dlltest.lib") toe boven het aanroepende cpp-bestand



De oproep is geslaagd!
---------------------
Auteur: Bird
Bron: CSDN
Origineel: https://blog.csdn.net/wcc27857285/article/details/84615891
Copyright: Dit artikel is een origineel artikel van de blogger, voeg de blogpost link toe voor herdruk!





Vorig:1. Bouw de nieuwste cursussoftware
Volgend:MFC's LPSTR-typeschrift
Geplaatst op 16-12-2023 13:10:26 |
Prompt:Auteurs worden verbannen of verwijderde inhoud wordt automatisch geblokkeerd
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com