У меня есть Intel® Parallel Studio XE, который предлагает компилятор Fortran для Microsoft Visual Studio (я использую версию 2013 Ultimate).
Возможно ли выполнить файл Фортрана в приложении C # или это должно быть приложение C / C ++? Как мне это сделать?
Никто из них не может использовать Fortran, вы должны создать проект Fortran, вы не можете смешивать языки. Возможное решение — создать DLL и связать ее с DLLImport, это может помочь вам:
У вас есть два варианта вызова Fortran из C #.
1) Создайте консольное приложение на Фортране (EXE). Вызвать из C # с помощью Process.Start и передать ввод и вывод с помощью файлов. Я бы рекомендовал начать с этого подхода.
var startInfo = new ProcessStartInfo();
startInfo.FileName = "MyFortranApp.exe";
startInfo.Arguments = @"C:\temp\input_file.txt C:\temp\output_file.txt";
Process.Start(startInfo);
2) Более продвинутый подход заключается в создании библиотеки Fortran DLL и вызова из C # с использованием P / Invoke (DllImport). С помощью DLL все входы и выходы передаются в память. Вы также можете использовать обратные вызовы, чтобы сообщить о прогрессе обратно в код вызова C #.
public static class FortranLib
{
private const string _dllName = "FortranLib.dll";
[DllImport(_dllName, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern void DoStuff([In] double[] vector, ref int n, [In, Out] double[,] matrix);
}
http://www.luckingtechnotes.com/calling-fortran-dll-from-csharp/
http://www.luckingtechnotes.com/calling-fortran-from-c-monitoring-progress-using-callbacks/