Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ
ЗВІТ
до лабораторної роботи № 6
з дисципліни
" Системне програмування"
Львів – 2012
Тема: СТВОРЕННЯ БІБЛІОТЕК ДИНАМІЧНОГО КОМПОНУВАННЯ ТА ЇХ ВИКОРИСТАННЯ В РЕЖИМІ НЕЯВНОГО ЗВ’ЯЗУВАННЯ
Мета: Ознайомитись з технологією створення та використання бібліотек динамічного компонування з використанням неявного зв’язування.
Теоретичні відомості:
DLL (англ. Dynamic-link library — динамічно завантажувана бібліотека) — реалізовані компанією Microsoft загальні бібліотеки в ОС Windows. Як правило бібліотеки мають розширення файлу *.dll, *.ocx (для бібліотек, що містять елементи керування ActiveX) або *.drv (драйвери старих версій ОС). Структура DLL така сама, як і в PE-файлів (Portable Executable) для 32-, 64-розрядних Windows, та New-Executable (NE) для 16-бітових Windows.
DLL може містити 2 типи функцій: експортні та внутрішні. Експортні функції визначаються за допомогою ключового слова __declspec(dllexport) і можуть бути викликані з програм, що завантажили динамічну бібліотеку, яка містить ці функції. Внутрішні функції – це функції, які використовуються в середині DLL і не можуть бути викликані ззовні.
ЗАВДАННЯ
8.Написати програму, що здійснює в деякому тексті заміну заданих слів (врахувати, що слова можуть мати різну довжину!)
Код програми:
Файл .dll
corrText.h
#ifndef _corrText_H_
#define _corrText_H_
#include <iostream>
#include <string>
#include <stdio.h>
#include <sstream>
#include <conio.h>
using namespace std;
extern "C" __declspec(dllexport) void corrText();
#endif
Код.срр
#include "corrText.h"
extern "C" __declspec(dllexport) void corrText()
{
string source;
cout << "Vvedit' text: ";
getline(cin, source);
const string pattern="new";
const string substitutiоn="cool";
const int pattern_length = pattern.length();
ostringstream result;
int previous = 0;
int matches_count = 0;
for (
int positiоn = source.find(pattern);
positiоn != string::npos;
positiоn = source.find(pattern, positiоn + 1)
)
{
if (previous != positiоn)
result << source.substr(previous, positiоn - previous);
result << substitutiоn;
previous = positiоn + pattern_length;
matches_count++;
}
const int source_length = source.length();
if (previous < source_length)
result << source.substr(previous, source_length - previous);
cout << "Zbigiv \"" << pattern << "\" najdeno: " << matches_count << endl;
cout << "Novij text: " << result.str() << endl;
getchar();
}
Виклик файлу .dll
#include <conio.h>
#include "corrText.h"
void main()
{
corrText();
getch();
}
Підключення бібліотек імпорту в проект:
Результат виконання:
Відбулась заміна слова «new» на слово «cool».
Висновок:
Я ознайомився з технологією створення та використання бібліотек динамічного компонування з використанням неявного зв’язування.