You can always make a DLL and make it C++ compatible

You cannot use dynamic array's and most string types (Use PChar instead). You cannot use pascal classes either. If you want your library to be a little more Object oriented you can also use Interfaces (derived from IUnknown). That way you can make C++ compatilbe API's with pascal

P.S: all exported DLL routines need STDCALL calling conventions