There are quite a few options, including at least the following:
- Expose the classes that you need via COM which can be readily consumed by Delphi.
- Create a mixed mode C++/CLI wrapper that uses the C# DLL as a reference. That mixed mode DLL can export native functions and you can then consume that DLL using Delphi
external
. That is, you consume the DLL just in the same way as Windows system DLLs are consumed.
- Use Robert Giesecke's UnmanagedExports.
- Use the CLR's native API to consume the C# DLL directly. This option is probably the least attractive since it's the hardest to get right.