1. Какво е статична библиотека за връзки (LIB) и какво е DLL за динамична библиотека с връзки? И статичните, и динамичните библиотеки за връзки споделят код, и двете в двоичен формат
2. Разликата между статичната библиотека за връзки (LIB) и DLL библиотеката с динамични връзки Ако използвате статично свързана библиотека, всички инструкции в библиотеката са директно включени в получения 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__ външно "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 и ги копирайте в директорията на обаждащия се; както е показано на фигурата по-долу:
PS: Тук всъщност Dlltest.lib се използва само при компилиране на линка към компилатора, така че след като програмата е генерирана, не можете да включите lib файла, а само dll файла, а истинската цел е dll файлът. Накратко, всички три файла трябва да бъдат копирани, но .h и .lib се използват за компилиране на връзки и само .dll са необходими да бъдат поставени в крайната генерирана директория.
2. Добавете #include "Dlltest.h" над повикания cpp файл
3. Добавете #pragma коментар (lib, "Dlltest.lib") над извиквания cpp файл
Обаждането е успешно! --------------------- Автор: Бърд Източник: CSDN Оригинал: https://blog.csdn.net/wcc27857285/article/details/84615891 Уведомление за авторски права: Тази статия е оригинална от блогъра, моля, прикачете линк към блог публикацията за препечатване!
|