Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 12415|Отговор: 1

[C] C++ Резюме на методи, които се позовават на Lib и Dll

[Копирай линк]
Публикувано в 2.07.2019 г. 17:06:54 ч. | | |
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
Уведомление за авторски права: Тази статия е оригинална от блогъра, моля, прикачете линк към блог публикацията за препечатване!





Предишен:1. Създайте най-новите учебни материали
Следващ:Писането на LPSTR на MFC
Публикувано в 16.12.2023 г. 13:10:26 ч. |
Бърз:Авторите са баннати или премахнато съдържание автоматично се блокира
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com