1. Czym jest statyczna biblioteka połączeń LIB i czym jest dynamiczna biblioteka łączy DLL? Zarówno statyczne, jak i dynamiczne biblioteki łączy dzielą kod, obie w formacie binarnym
2. Różnica między statyczną biblioteką łącza LIB a dynamiczną biblioteką łącza DLL Jeśli używasz statycznie powiązanej biblioteki, wszystkie instrukcje w pliku lib są bezpośrednio zawarte w powstałym pliku EXE. Dynamiczna biblioteka łącza dynamicznego nie musi być dołączona do ostatecznego pliku EXE, który może być "dynamicznie" odwołany i odczytywany podczas wykonywania pliku EXE. Kolejną różnicą jest to, że statyczna biblioteka łączy nie może już zawierać innych dynamicznych lub statycznych bibliotek łączy, podczas gdy dynamiczna biblioteka łączy może zawierać inne dynamiczne lub statyczne biblioteki łączy.
3. Metoda wywołania statycznej biblioteki łącza: Przetrwajmy, aby wygenerować plik lib:
VS2017--> Stwórz nowy projekt-->Windows desktop--> statycznej bibliotece, nazwa projektu to Libtest
Nowy funktem.h i functem.cpp
functem.h:
#pragma raz #include "stdafx.h" #ifndef _functem_H #define _functem_H int funktem(int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
Int Functem(int a, int b)
{ zwróć a + b;
} Następnie wygeneruj projekt, a w katalogu Debug znajdą się dwa pliki, Libtest.lib i Libtest.pdb
Podczas dzwonienia wymagane są trzy kroki:
1. Skopiuj Libtest.lib i functem.h do katalogu wywołującego; jak pokazano na poniższym rysunku:
2. Dodaj #include "functem.h" nad wywołującym plikiem cpp
3. Dodaj #pragma komentarz (lib, "Libtest.lib") nad wywołującym plikiem cpp
Jak pokazano na powyższym rysunku, wezwanie zakończyło się sukcesem.
4. Metoda wywołań biblioteki dynamicznych: Stwórz nowy projekt – > dynamiczną bibliotekę linków o nazwie projektu Dlltest
Stwórz nowy Dlltest.h:
#pragma raz #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)
{ zwróć x + y;
} Wygeneruj projekt, w katalogu Debug znajdziemy się:
Proces połączeń:
1. Skopiuj Dlltest.dll, Dlltest.lib i Dlltest.h i skopiuj je do katalogu wywołującego; jak pokazano na poniższym rysunku:
PS: W rzeczywistości tutaj Dlltest.lib jest używany tylko podczas kompilacji linku kompilatora, więc po wygenerowaniu programu nie można dołączyć pliku lib, tylko plik dll, a prawdziwym zastosowaniem jest plik dll. Krótko mówiąc, wszystkie trzy pliki muszą zostać skopiowane, ale do kompilacji linków używa się .h i .lib, a do końcowego wygenerowanego katalogu potrzebne są tylko .dll.
2. Dodaj #include "Dlltest.h" nad wywołanym plikiem cpp
3. Dodaj #pragma komentarz (lib, "Dlltest.lib") nad wywołującym plikiem cpp
Połączenie zakończyło się sukcesem! --------------------- Autor: Bird Źródło: CSDN Oryginał: https://blog.csdn.net/wcc27857285/article/details/84615891 Informacja o prawach autorskich: Ten artykuł jest oryginalnym artykułem autorstwa blogera, prosimy o dołączenie linku do posta blogowego do ponownego druku!
|