Phil - Good thought. I didn't mention that I built the lib from source (its a gcc build) on the raspberry and have tested it with sample programs (gcc again) from the vendor.
Since you're apparently hung up trying to get LoadLibrary to work, why not let the OS load the library automatically at startup instead of doing it manually? That might rule out the unlikely issue with LoadLibrary. I normally don't use LoadLibrary. It's most useful, for example, if the app can still be used even if a library can't be loaded, or if you might be loading different versions of a library where newer functions aren't part of older versions - otherwise it probably just makes sense to shut down the app if the OS can't load the library.
Simplifies your code quite a bit too. Note that you can write your external declarations in a way that allows you to conditionally switch between loading manually or automatically like this:
{$IFDEF LOAD_DYN}type Tseabreeze_open_spectrometer = function{$ELSE}function seabreeze_open_spectrometer{$ENDIF}
(iWorking:Integer; errorcode:PInteger):Integer;
{$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
{$IFNDEF LOAD_DYN}external LibNameBase;{$ENDIF}
{$IFDEF LOAD_DYN}
var
seabreeze_open_spectrometer : Tseabreeze_open_spectrometer;
begin
seabreeze_open_spectrometer := GetProcAddress(LibHandle, 'seabreeze_open_spectrometer');
{$ENDIF}
The calling code then is the same regardless of how the library is loaded.
Note: Check your DllDecl.h file to see how DLL_DECL is actually defined. I'm guessing that it's stdcall with Windows and cdecl with Linux and macOS.