1. Що таке LIB статичної бібліотеки з'єднань і що таке DLL для динамічної бібліотеки зв'язків? Як статичні, так і динамічні бібліотеки зв'язків діляться кодом, обидва у бінарному форматі
2. Різниця між статичною бібліотекою посилань (LIB) та DLL з динамічною бібліотекою посилань Якщо ви використовуєте статично зв'язану бібліотеку, всі інструкції з бібліотеки безпосередньо включаються у отриманий EXE-файл. Динамічна бібліотека динамічних посилань не обов'язково має бути включена до фінального EXE-файлу, який можна «динамічно» посилатися та вивантажувати під час виконання EXE-файлу. Ще одна відмінність полягає в тому, що бібліотека статичних посилань більше не може містити інші динамічні або статичні бібліотеки посилань, тоді як динамична бібліотека посилань може містити інші динамічні або статичні бібліотеки посилань.
3. Метод виклику статичної бібліотеки посилань: Давайте виживемо і створимо lib-файл:
VS2017--> Створити новий проєкт — >Windows робочий спосіб—> статичну бібліотеку, назва проєкту — Libtest
Новий functem.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;
} Потім згенеруйте проєкт, і в каталозі Debug буде два файли — Libtest.lib та Libtest.pdb
Під час дзвінка потрібно три кроки:
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__ зовнішня «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 і скопіюйте їх у каталог абонента; як показано на рисунку нижче:
P.S.: Тут, власне, Dlltest.lib використовується лише при компіляції посилання компілятора, тож після генерації програми ви не можете включати файл lib, лише файл dll, і справжнє призначення — це файл dll. Коротко кажучи, всі три файли потрібно скопіювати, але .h та .lib використовуються для компіляції посилань, і лише .dll потрібно розмістити у фінальній згенерованій директорії.
2. Додайте #include "Dlltest.h" над викликаним cpp-файлом
3. Додати #pragma comment(lib, "Dlltest.lib") над викликаним cpp-файлом
Дзвінок успішний! --------------------- Автор: Берд Джерело: CSDN Оригінал: https://blog.csdn.net/wcc27857285/article/details/84615891 Повідомлення про авторське право: Ця стаття є оригінальною статтею блогера, будь ласка, додайте посилання на блог-пост для повторного друку!
|