Вадим Ушаков, по ссылке смотрели? Загружается dll через LoadLibrary. Затем через GetProcAddress находится указатель на нужную функцию и по нему функция вызывается.
Нужно иметь знание о том, какие аргументы передаются и что возвращается.
Типом переменной будет определение этой самой функции.
Пример динамического подключения библиотеки sqlite3 на Паскале:
type
TSQLite3_Open = function(filename: PAnsiChar; var DB: TSQLiteDB): integer; cdecl;
var
SQLite3_Open: TSQLite3_Open;
...
@SQLite3_Open := GetProcAddress(SQLiteDLLInstance, 'sqlite3_open');
Использование как обычно
if SQLite3_Open(PAnsiChar(AnsiString(FileName)), FDBInstance) <> SQLITE_OK then