Библиотеки в PascalABC.NET и их подключение к программе на C#
PascalABC.NET - язык платформы .NET и может создавать библиотеки dll, которые можно подключать к проекту, написанному языке C# и вообще на любом .NET-языке. Делается это чрезвычайно просто.
Создание библиотеки на PascalABC.NET
Простая библиотека на PascalABC.NET представляет собой набор процедур и функций, помещенных в неекоторый файл, которыйй начинается со строки
Рассмотрим простейшую библиотеку с двумя функциями - для вычисления наибольшего общего делителя двух целых чисел и для создания списка цифр целого числа:
library libAlgo; function GCD(a, b: int64): int64; begin while b <> 0 do (a, b) := (b, a mod b); Result := Abs(a) end; function Digits(n: int64): List<integer>; begin Result := new List<integer>; n := Abs(n); while n > 0 do begin Result.Add(n mod 10); n := n div 10 end; Result.Reverse end; end.
Данную библиотеку следует сохранить в файле с именем libAlgo,pas, совпадающем с именем библиотеки.
Откомпилируем библиотеку, нажав комбинацию клавиш Ctrl-F9. На диске будет создан файл libAlgo.dll, который является единицей компиляции в .NET. Его можно подключить к любому проекту на любом .NET-языке.
Подключение dll к программе на PascalABC.NET
Подключим вначале dll к программе на самом PascalABC.NET и вызовем все ее функции. Сделать это крайне просто:
{$reference libAlgo.dll} begin Println(Digits(21345)); Println(GCD(72,246)); end.
Здесь строка {$reference libAlgo.dll} является директивой компилятора, дающей указание компилятору подключить библиотеку к основной программе.
Обязательно надо проверить, что основная программа хранится в той же папке, что и файл libAlgo.dll.
[2,1,3,4,5] 6
Подключение dll к программе на C#
Создадим консольный проект на C# для .NET Framework:
Добавим ссылку на libAlgo.dll в обозревателе решений:
Для этого щелкнем на кнопке Обзор... и выберем нужную dll:
Здесь надо обратить внимание на подключение статического класса libAlgo.libAlgo, которое на C# осуществляется директивой
using static libAlgo.libAlgo;
Заметим, что PascalABC.NET делает это автоматически.
Кроме того, на C# приходится выводить данные списка в цикле. Однако результат программы - тот же:
6 2 1 3 4 5
Заключение. Итак, мы показали, как создавать библиотеки dll на PascalABC.NET и подключать их к программе на самом PascalABC.NET и к программе на C#, обеспечивая межъязыковое взаимодействие.