Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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 Desktop->статическую библиотеку, название проекта — 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 comment(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)
{
        return x + y;
}
Сгенерируйте проект, в каталоге отладки есть:



Процесс звонка:

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