Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined
Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined
我有这段代码:
subroutine ReadCharToVariable(self,Format,VarOut)
implicit none
! Declaring Part
class(FileImporter) :: self
character(len=25) :: DefaultValue = 'null'
character(len=25), intent(out) :: VarOut
character (len=*) :: Format
class(*), allocatable :: Value
! Executing Part
allocate(Value,source = DefaultValue)
call self%ReadValueToVariable(Format,Value)
select type(Value)
type is (character(*))
VarOut = Value
end select
end subroutine ReadCharToVariable
所做的是,它调用 ReadValueToVariable,Value
是字符类型。 ReadValueToVariable 然后从文件中读取一个字符并 returns 它在 Value
中。编译它(gcc 4.8.5)导致错误
/tmp/cc5JuIb6.s: Assembler messages:
/tmp/cc5JuIb6.s:156: Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined
错误是由 type is (character(*))
行引起的(没有它编译的字符功能)。我不明白这里出了什么问题,也许你可以帮助我?
这绝对是一个编译器错误。与https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359有关,或者直接就是这个https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359,在gfortran 4.9中被修复。请注意,4.8 有一段时间不受支持,我认为 4.9.4 版本也是 4.9 的最后一个版本。支持的版本是 5 和 6。
我有这段代码:
subroutine ReadCharToVariable(self,Format,VarOut)
implicit none
! Declaring Part
class(FileImporter) :: self
character(len=25) :: DefaultValue = 'null'
character(len=25), intent(out) :: VarOut
character (len=*) :: Format
class(*), allocatable :: Value
! Executing Part
allocate(Value,source = DefaultValue)
call self%ReadValueToVariable(Format,Value)
select type(Value)
type is (character(*))
VarOut = Value
end select
end subroutine ReadCharToVariable
所做的是,它调用 ReadValueToVariable,Value
是字符类型。 ReadValueToVariable 然后从文件中读取一个字符并 returns 它在 Value
中。编译它(gcc 4.8.5)导致错误
/tmp/cc5JuIb6.s: Assembler messages:
/tmp/cc5JuIb6.s:156: Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined
错误是由 type is (character(*))
行引起的(没有它编译的字符功能)。我不明白这里出了什么问题,也许你可以帮助我?
这绝对是一个编译器错误。与https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359有关,或者直接就是这个https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359,在gfortran 4.9中被修复。请注意,4.8 有一段时间不受支持,我认为 4.9.4 版本也是 4.9 的最后一个版本。支持的版本是 5 和 6。