Как скомпилировать отдельные фортрановые объекты с помощью переводчика f2c? - PullRequest
6 голосов
/ 26 сентября 2011

У меня следующая проблема: я хочу смоделировать какую-то систему управления. Поскольку это довольно сложно, я использовал компьютер, чтобы вывести некоторые (сложные) уравнения, которые можно экспортировать только в код fortran77. На моем компьютере разработчика это не проблема (машина linux).

Нет, я хочу сделать это аппаратно, и здесь я должен использовать ОС Windows. К сожалению, Matlab не поддерживает Gfortran на Windows. Поэтому я не могу скомпилировать файлы Фортрана на этом поле.

Моя идея была теперь перевести на C, так как компилятор C доступен в matlab на win. Любые другие (лучшие) варианты?

У меня есть несколько СУБРУТИНОВ в следующем порядке.

      SUBROUTINE sys_rhs (x, v, dx, param) 
      REAL*8 x(6)
C     code is coming here
      RETURN
      END SUBROUTINE

Это хорошая практика, и работает ли она, чтобы использовать функцию sys_rhs__ в интерфейсной функции, написанной на C? Проблема в том, что я не могу проверить это, поскольку у меня нет массового доступа к машине Windows. Так что это должно сработать, если я попробую и мне не нужно много экспериментировать.

Кроме того, какие библиотеки мне нужны в Windows? Где их взять?

Спасибо Christian

Ответы [ 4 ]

0 голосов
/ 13 декабря 2011

Ответ был довольно прост: у меня были некоторые синтаксические ошибки в моем коде фортрана. gfortran не выполняет такой строгой проверки синтаксиса и поэтому правильно интерпретирует код Фортрана. После удаления опечаток я преобразил транскодирование с помощью f2c.

Спасибо

0 голосов
/ 26 сентября 2011

Intel продает довольно хороший компилятор для Фортрана (http://software.intel.com/en-us/articles/fortran-compilers/), который они бесплатно раздают для тестирования ...; -)

PS Нет, я никак не связан с этой компанией!

0 голосов
/ 26 сентября 2011

Возможно, вы захотите проверить проект gnumex , который позволяет компилировать MEX-файлы с использованием набора компиляторов GNU GCC (с использованием MinGW или Cygwin), с возможностью использования g77 для компиляции программ на Фортране.

0 голосов
/ 26 сентября 2011

есть лучшее решение для всего этого

Используйте ваш Linux-компьютер или Windows-машину для реализации функции в c / c ++, а затем сгенерируйте файл dll.

В Matlab вы можете загрузить DLL и вызвать функции внутри нее.

Вот простой урок, показывающий, как вызывать dll с помощью matlab.

http://www.mathworks.com/matlabcentral/fileexchange/15065-example-of-loading-c-dll-and-performance-comparison

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...