Run Fortran DLL with Visual Studio

2019-01-19 09:24发布

问题:

I develop a website with Visual Studio 2010. I want to run a Fortran DLL. I used Intel Visual Fortran to create a .dll and to test how to use it. My code is:

      SUBROUTINE SIMPSON (N,H,I)

     !DEC$ ATTRIBUTES DLLEXPORT, DECORATE, ALIAS : "SIMPSON" :: SIMPSON
     !DEC$ ATTRIBUTES REFERENCE::N
     !DEC$ ATTRIBUTES REFERENCE::H
     !DEC$ ATTRIBUTES REFERENCE::I
      INTEGER N,H,I

      I=N+H

      RETURN
      END

which practically takes two integers, adds them and return the result. Now I have the .dll I don't know how to run it with Visual Studio. Can anyone who knows please give me steps to follow?

回答1:

I do this all the time. What I do, is in the calling project (C#, VB.NET) I add the .dll output to the project as an existing item, with Add as Link option. Then I set it to copy if newer in the project tree.

In the end it follows the binary when you compile it into the bin/Debug or bin/Release folders.

With C# you then use the [DllImport()] attrbiute like this:

[DllImport("trex_pc.dll")]
static extern Simpson(ref int N, ref int H, ref int I);

For more details look at this answer from me.



回答2:

You could simply create a Console project in IVF and link in your DLL. That may require producing a .lib file containing references to your DLL. I'm not 100% sure how to do that, although perhaps it was automatically created for you.

After the library is linked in, you can simply call simpson and it should work.



回答3:

You can use the Post-Build Event in the dll Property Pages:

  • Click right on DLL-project in Solution Explorer
  • goto Build Events - post-Build Events
  • Command Line copy/y "$(OutDir)\$(ProjectName).dll" "$(SolutionDir)\bin\debug\" The DLL will be copied each time you build the DLL or Solution. The target location might be different.