2017-02-05 12 views
0

Я написал модуль, который включает в себя все необходимые подпрограммы и функции, которые мне нужны. Этот модуль является общим, и мне интересно, есть ли способ избежать постоянного использования полнотекстовой версии модуля и вместо этого назвать его как библиотеку Fortran или внутренним сохраненным модулем?Возможно ли сохранить модуль в виде библиотеки, чтобы избежать его постоянной копии и прошлого в каждом программном коде

ответ

1

Вы можете использовать модуль следующим образом. Если вы создаете код модуля, для этого примера модуль называется капсулой и имеет подпрограмму под названием sub, создается файл «capsule.mod». Теперь вы можете использовать этот модуль в другом проекте следующим образом:

  1. Добавить capsule.mod в список файлов линкер должен использовать, или если вы используете язь, просто скопировать файл в папку, где все файлы объектных кодов.
  2. Используйте команду

    use capsule 
    

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

  3. вызова подпрограммы

    call sub() 
    

И вы сделали повторное использование вашего однажды построить файл capsule.mod.

Редактировать: Я имел в виду компилятор, модуль должен быть видимым компилятору, а не компоновщику.

+1

Линкер обычно ничего не знает о файлах .mod, созданных компилятором Fortran. Линкеры работают с объектным кодом. – IanH

1

Альтернативно, вы можете захотеть скомпилировать свою общую процедуру как общую библиотеку или DLL. Сообщение Shared library in Fortran, minimal example does not work имеет минимальный пример для систем gfortran и unix-y; пример для Intel Fortran в Windows - https://software.intel.com/en-us/node/535308. Я видел слухи о том, что gfortran может создавать DLL-файлы в Windows с использованием флага -shared, но я бы очень осторожно шел по этому маршруту.

+0

Как сказал Алекс ... Используйте USE, а затем получите некоторую проверку интерфейса. – Holmz

+1

Согласен; неясно, была ли цель связываться с предварительно скомпилированным модулем или с общей библиотекой. Недостатком модулей является то, что файлы '.mod' не переносимы через компиляторы (т. Е. Один построенный с ifort не будет работать с кодом, созданным с помощью gfrotran). Общие библиотеки ('.so',' .dll') должны избегать этой проблемы за счет отсутствия проверки интерфейса и дополнительной сложности в компиляции. Компромиссы ... – arclight

 Смежные вопросы

  • Нет связанных вопросов^_^