DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Створення DLL та їх використання при неявному зв’язуванні на мові С

Оригінальна назва роботи

Cтворення dll та їх використання при неявному зв’язуванні на мові с

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування та операційні системи
Група:
КН-31
Коротко про документ

Про що ця робота

Звіт до лабораторної роботи присвячено створенню та використанню бібліотек динамічного компонування (DLL) у середовищі Windows на мові C. Розглянуто особливості неявного зв'язку бібліотек із програмою та наведено приклад реалізації підрахунку кількості замін літер у словах.

У роботі розглядаються

  • Системне програмування
  • Бібліотеки динамічного компонування
  • Неявне зв'язування DLL
  • Мова програмування C
  • Експорт функцій
  • Модульність програм

Зміст і розділи

  1. Мета
  2. Теоретичні відомості
  3. Завдання
  4. Код виконавчої програми
  5. Код бібліотеки DLL
  6. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають системне програмування.
Викладачі:Мархивка В. С.

Ключові поняття

DLLнеявне зв'язуваннядинамічна бібліотекасистемне програмуваннякомпіляціяфункціяекспортзаголовочний файлмодуль

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки Національний університет «Львівська політехніка» Кафедра ЕОМ Звіт до лабораторної роботи № 6 з дисципліни: “Системне програмування” на тему: Cтворення dll та їх використання при неявному зв’язуванні на мові с Варіант - 19 СТВОРЕННЯ DLL ТА ЇХ ВИКОРИСТАННЯ ПРИ НЕЯВНОМУ ЗВ’ЯЗУВАННІ НА МОВІ С Мета: Ознайомитись з технологією та оволодіти навиками створення та використання бібліотек динамічного компонування з використанням неявного зв’язування. ТЕОРИТИЧНІ ВІДОМОСТІ: Використання DLL у Windows Загальні бібліотеки функцій в ОС Windows реалізовані компанією Microsoft за DLL технологією. Як правило, ці бібліотеки мають розширення файлу *.dll, *.ocx (для бібліотек, що містять елементи керування ActiveX) або *.drv (драйвери старих версій ОС). DLL може містити 2 типи функцій: експортні та внутрішні. Експортні функції можуть бути викликані зі зовнішніх прикладних та визначаються за допомогою ключового слова __declspec(dllexport). Внутрішні – це функції, які використовуються в середині DLL і не можуть бути викликані ззовні. DLL є модулем (module). Тобто, вона складається з: сегментів коду, сегментів ресурсів та одного сегменту даних. Крім цього DLL може містити точку входу. Точка входу – це функція DllMain, яка викликається при завантаженні або вивантажені бібліотеки потоком або процесом. Якщо DllMain повертає FALSE, то бібліотека вважається такою, що не завантажилася. При неявному зв’язуванні це призведе до відмови запуску програми, а при явному – помилки завантаження лише цієї бібліотеки. У процесі виконання вміст бібліотеки залишається незмінним (сегменти коду та сегменти ресурсів), що дозволяє завантажувати її в пам’ять в єдиному примірнику і використовувати багатьма завданнями одночасно. Використання dll дозволяє економити пам’ять, забезпечити модульність програм, полегшити процес встановлення програм. Можливі 2 способи використання динамічних бібліотек. Вони називаються “явним” та “неявним” зв’язуванням. “Явне” та “неявне” зв’язування бібліотеки з програмою мають суттєві відмінності в процесі написання та компіляції програми. Неявне зв’язування бібліотеки з програмою (Load-time dynamic linking) полягає в тому, що бібліотека (яка міститься у файлі з розширенням .dll) завантажується в пам’ять в момент завантаження програми. При відсутності бодай однієї з бібліотек при запуску програми відбудеться збій та припинення виконання програми. Щоб реалізувати неявне зв’язування необхідно до проекту програми включити прототипи функцій, що містяться в бібліотеці та бібліотеку імпорту (має розширення .lib). На даному етапі наявність файлу з розширенням .dll не є необхідною. При компоновці створюється виконавчий файл, який містить код, що забезпечує систему інформацією, яка необхідна для автоматичного завантаження бібліотеки з .dll файлу та інформацією, яка необхідна для зв’язування імен функцій у програмі з їх адресами у бібліотеці. Неявне зв’язування дозволяє здійснювати виклик функцій з бібліотеки написанням коду програми в стилі притаманному мовам С\С++. ЗАВДАННЯ Створити функцію в бібліотеці DLL, яка виконуватиме завдання відповідно до варіанту. ВАРІАНТ ЗАВДАННЯ: Підрахувати, скільки букв треба виправити в слові Х, щоб вийшло слово Y (Х і Y- слова однакової довжини). КОД ВИКОНАВЧОЇ ПРОГРАМИ: Файл(main.cpp) #include <iostream> #include <stdio.h> #include "../myDll/Header.h" using namespace std; void main() { char str1[100]; printf("Enter word X: "); cin >> str1; char str2[100]; printf("Enter word Y: "); cin >> str2; cout << LetterCounter(str1,str2) << endl; } КОД БІБЛІОТЕКИ DLL: Файл(Header.h) #pragma once #include <iostream> #include <stdio.h> extern "C" __declspec(dllexport) int LetterCounter(char str1[], char str2[]); Файл(myDll.cpp) #include "Header.h" extern "C" __declspec(dllexport) int LetterCounter(char str1[], char str2[]) { int count = 0; if (strlen(str1) != strlen(str2)) { printf("Error, enter the same length "); return 0; } for (int i = 0; i < strlen(str1); i++) { if (str1[i] != str2[i]) { count++; } } printf("The letter correct: "); return count; } РЕЗУЛЬТАТ ВИКОНАННЯ: / Рис.1 Вміст консолі після виконання програми ВИСНОВОК: На даній лабораторній роботі я оволодів навиками створення та використання бібліотек динамічного компонування з використанням неявного зв’язування.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!