1

fortranを使用して静的ライブラリを開発する場合:

libは、「モジュールa」、「モジュールb」などの複数のモジュールで構成されます。

各モジュールには、パブリック変数、タイプ、およびプロシージャがあります。

ここで、プログラム「test」でlibを使用します。

考えられる方法の1つは、各モジュールを使用し、リンク中に*.alibファイルを提供することです。例えば:

program test
  use a
  use b
  ...
end program

ただし、1つのmodule/*。hのみを使用/含める必要がある場合はより良いでしょう。例えば:

program test
  use all
  ...
end program

考えられる解決策の1つは、プロシージャのすべてのパブリック変数、タイプ、およびインターフェイスを「module all」にコピーし、個々のモジュールの代わりに「moduleall」を使用することです。

ただし、個々のモジュールのいずれかを変更する場合は、変更に合わせて「モジュールすべて」も変更する必要があります。

回避するためのより適切な方法はありますか、または「モジュールすべて」を生成するための自動ツールはありますか?

ご入力ありがとうございます。

4

2 に答える 2

3

個々のモジュールからモジュール「all」にコードをコピーすることはしません。あなたが言うように、コードが変更されると余分な作業が発生するからです。そしてエラーの可能性。代わりに、モジュール「all」でそれらのモジュールを「使用」してください。次に、それらすべてが必要な場合は、「モジュールすべてを使用」します。特定のモジュールが必要な場合は、そのモジュールを使用します。禁止されているために注意しなければならないのは、循環モジュール参照です。AはBを使用し、CはAを使用することは許可されていません。

于 2012-04-10T05:00:48.107 に答える
2

究極の解決策はsubmodule、残念ながらgccでサポートされていないを使用することのようです。

参照: http: //fortranwiki.org/fortran/show/Submodules

于 2012-04-10T13:48:20.980 に答える