Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 12415|Відповідь: 1

[C] C++ Резюме методів, що посилаються на Lib та Dll

[Копіювати посилання]
Опубліковано 02.07.2019 17:06:54 | | |
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
Повідомлення про авторське право: Ця стаття є оригінальною статтею блогера, будь ласка, додайте посилання на блог-пост для повторного друку!





Попередній:1. Створіть найновіші навчальні програми
Наступний:Текст LPSTR від MFC
Опубліковано 16.12.2023 13:10:26 |
Оперативне:Автори забанені або видалений контент автоматично блокується
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com