Как обычно, ничего не понятно
но раз без примеров, тогда и обще-выборочный ответ - в понятии библиотек есть одна аксиома - функции и процедуры могут быть лишь локальными или экспортируемыми, универсалов нет, причём локали видны только внутри самой библиотеки и ни одна сборка не может их вызвать снаружи, потому как без объявления в "шапке" они не функции, это просто набор машкодных байтов
Цитата:
...параметры идут в стек...
|
Это как я понимаю, сишный прикол, поскольку в делфях параметры приципиально лежат в регистрах, со стеком идёт другая работа, поэтому, чтоб не спутать, соглашение о вызовах и предусматривает директиву stdcall для "скобяных поделок" и других языков, если они __stdcall
Цитата:
...Никакой PE-explorer эти процедуры не видит...
|
Dll может быть и сжатой какимнить компрессором
Откуда такая уверенность, нужна таблица поскольку динамически, через loadLibrary вызывается так
Код:
...
// объявление функции и определение с типами параметров
type
TSomefun = function(par1: integer): integer;
...
var
i: integer;
dllhandle: Thandle;
abs: TSomefun;
begin
// загрузка
dllhandle:= LoadLibrary('dll.dll');
// указатель на функцию
@abs:= GetProcAddress(dllhandle, 'NameFun' {"родное" название});
// вызов
i:= IntToStr(abs(5));
// выгрузка
FreeLibrary(dllhandle);
end;
без имени и типа параметров/результата функцию видимо не вызвать никак, может и ошибаюсь