Visual Studio и FORTRAN работают вместе?

Недавно я начал работу над проектом, который в основном представляет собой графический интерфейс для консольного приложения FORTRAN, который запускает серию симуляций в наборе данных.

То, что я хочу сделать, это изменить этот код FORTRAN и скомпилировать его как .dll, чтобы я мог передавать данные непосредственно через элемент импорта DLL.

Так что мне было интересно, можете ли вы создать проект FORTRAN в Visual Studio 2010? Как в возможности компилировать и отлаживать код?

И есть ли какие-то негативы, связанные с прямым вызовом скомпилированного файла FORTRAN.dll? Такие, как ограниченные типы данных данных paramater/возвращаемые типы данных?

Спасибо, Алекс.

Ответ 1

Так что мне было интересно, можете ли вы создать проект FORTRAN в Visual Studio 2010? Как в возможности компилировать и отлаживать код?

Да, вы можете. Но я думаю, вам нужно купить коммерческий компилятор с интеграцией в VS.

Я знаю как минимум 3 варианта. Intel® Fortran Composer и PGI Visual Fortran® могут создавать собственный код и Silverfrost FTN95 может создавать сборки .NET(он поддерживает .NET 4.0).

И есть ли какие-то негативы, связанные с прямым вызовом скомпилированного файла FORTRAN.dll? Такие, как ограниченные типы данных данных paramater/возвращаемые типы данных?

Но если у вас уже есть консольное приложение, чем я на самом деле рекомендую хранить его так, как есть. Не создавайте DLL, просто напишите приложение GUI как своего рода интерфейс для консоли. Интерфейс GUI должен иметь возможность генерировать входные файлы и анализировать выходные файлы.

С моей точки зрения этот способ намного более гибкий. В будущем вы можете легко использовать консольную консоль на кластере * nix, например. Или некоторые опытные пользователи могут использовать скрипты вокруг консоли back-end...

Вы также можете предоставить пользователю возможность отправить этот сгенерированный входной файл на консольный сервер (создание нового процесса) из вашего приложения GUI. Приложение GUI будет ждать завершения процесса и последующего анализа вывода. Но такая жесткая интеграция фоновых и интерфейсных модулей не требуется.