call Fortran subroutine from Mathematica // use NETLink and DLL | Scot T. Martin | 7/22/11 11:30 PM | This post explains how to call a Fortran subroutine as a DLL from Mathematica. I don't think the hints in this post exist in explicit form in the Wolfram documentation or in the MathArchive, at least so far as I could find. There is information in a post from Wolfram for how to use Mathlink via C wrappers to get to Fortran subroutines (version 3 of Mathematica? http://library.wolfram.com/infocenter/TechNotes/174/). *BUT* I think since the introduction of NETLink into Mathematica (version 6?), the matter is now much more straightforward, at least in a Windows environment. The purpose of this post is therefore to a future user who might want to follow what I have done. >From Windows7, 64-bit, and using the gnu compiler (http://gcc.gnu.org/wiki/GFortranUsage), here is the trace of the CMD commands: C:\Demo>dir C:\Demo>more SumAndDifference.f90 subroutine sum_and_difference(i,j,resultArray) C:\Demo>gfortran -c SumAndDifference.f90 C:\Demo>gfortran -s -shared -mrtd -o SumAndDifference.dll SumAndDifference. C:\Demo>dir
In[1]:= Needs["NETLink`"] In[2]:= SetDirectory@NotebookDirectory[] In[3]:= $pathToDLL = FileNameJoin[{Directory[], "SumAndDifference.dll"}] [To understand below, read: http://www.wolfram.com/learningcenter/tutorialcollection/NETLinkUserGuide/ ] In[5]:= results = MakeNETObject[{0, 0}, "System.Int32[]"] In[6]:= SumAndDifference[10, 20, results] In[7]:= NETObjectToExpression@results |