Заменив PWideChar на PAnsiChar в библиотеке и модуле, получил схожий результат.

Зато пример с Free Pascal работает:
## Код:
```
type
    ByteArr = array [0.. 255] of byte;
    PByteArr = ^ByteArr;

const
    Lib = 'libtest.dll';
    
procedure Demo (var b: PWideChar; a: PWideChar); external Lib;
procedure Demo2 (var b: PAnsiChar; a: PAnsiChar); external Lib;

//procedure InsidePWideChar(s: PWideChar);
procedure InsidePAnsiChar(s: PAnsiChar);
var
    t: PByteArr;
    i: integer;
begin
    t := PByteArr(s);
    for i := 0 to 19 do
        write(t^[i]:4);
    writeln;
    for i := 0 to 19 do
        write(chr(t^[i]):4);
    writeln;
end;

var
    //p, s: PWideChar;
    p, s: PAnsiChar;
begin
    writeln('===');
    //p := PWideChar('Hello-');
    p := PAnsiChar('Hello-');
    
    writeln(AnsiString(p));
    //Demo(s, p);
    Demo2(s, p);

    //InsidePWideChar(s);
    InsidePAnsiChar(s);
    //writeln(WideString(s));
    writeln(AnsiString(s));
end.
```
