Back again!
I found the solution to my own problem.
It was to do with the code produced by the Microsoft C++ compiler/linker.
By default Microsoft C++ compiles functions using the __cdecl parameter calling convention. The rest of the known world uses the __stdcall parameter calling convention.
As a result all the was needed was to change the function definitions in the C++ code, recompile and all was golden.
Before:
long SameNumber(long lReturnThis)
After: 
long __stdcall SameNumber(long lReturnThis)
Cheers all. Have a good day!
John