The runtime library makes the Fortran DLL look like it was built with the Compaq or Digital Fortran compilers. By default those compilers used the stdcall calling convention. For your specific example the two arguments (parameters on the C side) are equivalent to float *
, subroutines are equivalent to void functions. You would need to use a C++ compiler that supports stdcall. How you nominate that the function is exported in the DLL depends on your C++ compiler or personal preference, but some sort of dllexport keyword is typical.
From the point of view of change management, it would be far simpler to write the replacement DLL in Fortran and use something like the Intel Fortran compiler, which, being a descendent of the CVF compiler, has appropriate legacy support. Changes to the DLL source code can then be made in a progressive fashion.