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 Уведомление об авторском праве: Эта статья является оригинальной статьёй блогера, пожалуйста, приложите ссылку на пост для перепечатки!
|