Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки
Національний університет “Львівська політехніка”
Кафедра ЕОМ
/
Звіт
з лабораторної роботи № 6
з дисципліни: “Системне програмування”
на тему: “Створення DLL та їх використання
при неявному зв’язування на мові C”
Мета лабораторної роботи
Ознайомитись з технологією та оволодіти навиками створення та використання бібліотек динамічного компонування з використанням неявного зв’язування.
Теоретичні відомості
Завершальним етапом створення програмного продукту є процес збирання (компонування) завантажувального модуля (.exe – файлу). Компонуванням (linking) називають процес створення фізичного або логічного виконуваного файлу (модуля) із набору об’єктних файлів бібліотек для подальшого виконання або під час виконання і вирішення проблеми неоднозначності імен, що виникає при цьому.
У разі створення фізичного виконуваного файлу для подальшого виконання компонування називають статичним, коли у такому файлі міститься все потрібне для виконання програми. У випадку створення логічного виконуваного файлу під час виконання програми компонування називають динамічним, у цьому випадку образ виконуваного модуля збирають “на ходу”.
Індивідуальне завдання
29. Ввести рядок тексту та два окремі символи. Вилучити з вхідного рядка всі другі символи після того як зустрінеться перший символ. Вивести новий рядок на екран.
Код програми
.dll
dlltest.h
#ifndef _DLLTEST_H_
#define _DLLTEST_H_
extern "C" __declspec(dllexport) void char_delete(char *, char, char);
#endif // _DLLTEST_H_
dlltest.cpp
#include <iostream>
#include "dlltest.h"
extern "C" __declspec(dllexport) void char_delete(char *str, char char1, char char2)
{
for (int i = 0; str[i]; ++i)
if (str[i] == char1)
{
const int begin = i + 1;
const int length = strlen(str);
while (++i < length)
for (int j = begin; str[j] && str[j - 1]; ++j)
if (str[j] == char2)
std::swap(str[j], str[j + 1]);
break;
}
}
.exe
dlltest.h
#ifndef _DLLTEST_H_
#define _DLLTEST_H_
extern "C" __declspec(dllexport) void char_delete(char *, char, char);
#endif // _DLLTEST_H_
main.cpp
#include <iostream>
#include <conio.h>
#include "dlltest.h"
#define BUFFER 1024
void main()
{
std::cout << "Enter a string and two characters:" << std::endl;
char str[BUFFER];
char char1, char2;
std::cin.getline(str, BUFFER);
std::cin >> char1 >> char2;
char_delete(str, char1, char2);
std::cout << str << std::endl;
_getch();
}
Результат виконання програми
/
/
/
Висновок
Я ознайомився з технологією та оволодів навиками створення та використання бібліотек динамічного компонування з використанням неявного зв’язування.