Я получаю странную ошибку, когда пытаюсь скомпилировать код, который я пишу. У меня есть несколько модулей Fortran, которые я использую для вычислений линейной алгебры; Я не хочу, чтобы сделать приложение должно использовать их все, поэтому я написал модуль обертки вокруг них:free_pi_tree error with gfortran
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
Это был воспитан в сообщениях об ошибках here и here, но я не смог извлечь из тех, что я должен делать.
мутить воду еще больше, когда я вместо того, чтобы использовать модуль csr_matrix первого, так как:
module linear_algebra_mod
use csr_matrix_mod
use sparse_matrix_mod
ошибка исчезает.
В случае, если эта справочная информация полезна: модуль sparse_matrix определяет абстрактный тип данных, который модуль csr_matrix расширяет и фактически реализует.