@JonB Many thanks for all the help. It's made me go off and do a pile of reading and I understand a little more. I had never understood, for example, what the extern "C" meant, but I think I do now. Some of the reading has suggested to me that Linux has all this sussed a lot better than Windows (but that woud be no surprise ;-) )
This post:
https://forum.qt.io/topic/75458/compatibility-libraries-generated-by-msvc-and-mingw/3
Suggests that as long as I follow a few rules I should be OK.
I am guessing that you can use internal functions using C++ classes as long as anything exposed to the outside world is C style.
I'm still a bit comfused because I am following a PDF for this specific project that talks about what functions must be supplied for the DLL and it gives an example of how to do these functions in Pascal! So my original assumption was any language could be used for the DLL and any language could then use that DLL. From what I can tell, the document I'm following was written in October 2013 so it's a fair while ago, if not from the really early days of Windows - already up to Win 8 by then.
It is the case, I think that at least one of the companies who'd want to use this DLL still use Delphi!