Библиотеки в 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#, обеспечивая межъязыковое взаимодействие.