当我尝试编译我正在编写的一些代码时,我得到一个奇怪的错误。我有几个用于线性代数计算的 Fortran 模块;我不想让应用程序必须使用所有这些,所以我围绕它们编写了一个包装模块:
module linear_algebra_mod
use sparse_matrix_mod
use csr_matrix_mod
(etc.)
以便最终用户可以编写use linear_algebra_mod
以获取所有这些。但是,当我编译线性代数模块时出现以下错误:
gfortran -c sparse_matrix_mod.f90
gfortran -c csr_matrix_mod.f90
gfortran -c linear_algebra_mod.f90
linear_algebra_mod.f90:5.8:
use csr_matrix_mod
1
Internal Error at (1):
free_pi_tree(): Unresolved fixup
这是在这里和这里的错误报告中提出的,但我无法从那些我应该做的事情中收集到。
为了进一步混淆水域,当我首先使用 csr_matrix 模块时,如下所示:
module linear_algebra_mod
use csr_matrix_mod
use sparse_matrix_mod
错误消失。
如果此背景信息有帮助:sparse_matrix 模块定义了 csr_matrix 模块扩展并实际实现的抽象数据类型。