Как я могу использовать файл Fortran в приложении C #?

У меня есть Intel® Parallel Studio XE, который предлагает компилятор Fortran для Microsoft Visual Studio (я использую версию 2013 Ultimate).
Возможно ли выполнить файл Фортрана в приложении C # или это должно быть приложение C / C ++? Как мне это сделать?

2

Решение

Никто из них не может использовать Fortran, вы должны создать проект Fortran, вы не можете смешивать языки. Возможное решение — создать DLL и связать ее с DLLImport, это может помочь вам:

https://sukhbinder.wordpress.com/2011/04/14/how-to-create-fortran-dll-in-visual-studio-with-intel-fortran-compiler/

2

Другие решения

У вас есть два варианта вызова 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/

2

По вопросам рекламы [email protected]