Каждая экспортируемая подпрограмма в компилированном файле библиотеки представлена уникальным символьным именем. Эти имена собраны в таблицу и используются при поиске подпрограмм - с их помощью выполняется динамическая привязка записанных в программе команд вызова к адресам соответствующих процедур и функций в библиотеке. В качестве экспортного имени может выступать любая последовательность символов, причем между заглавными и строчными буквами делается различие.
По умолчанию экспортное имя подпрограммы совпадает с ее идентификатором в исходном тексте библиотеки (с учетом заглавных и строчных букв). Например, если секция exports имеет следующий вид,
Exports
BubleSort;
то экспортное имя процедуры будет BubleSort. При желании экспортное имя можно сделать отличным от программного имени, дополнив описание директивой name, например:
Exports
BubleSort name 'BubleSortIntegers';
В итоге, экспортное имя процедуры BubleSort будет BubleSortIntegers.
Экспортные имена подпрограмм должны быть уникальны в пределах библиотеки, поэтому их нужно всегда указывать явно для перегруженных (overload) процедур и функций. Например, если имеются две перегруженные процедуры с общим именем QuickSort,
procedure QuickSort(var Arr: array of Integer); overload; // для целых чисел
procedure QuickSort(var Arr: array of Real); overload; // для вещественных
то при экспорте этим двум процедурам необходимо явно указать отличные друг от друга экспортные имена:
Exports
QuickSort(var Arr: array of Integer) name 'QuickSortIntegers';
QuickSort(var Arr: array of Real) name 'QuickSortReals';
Полные списки параметров нужны для того, чтобы компилятор мог разобраться, о какой процедуре идет речь в каждом случае.