错误:已定义符号`__fileimporter_class_MOD___copy_character_1'

时间:2016-10-26 10:17:43

标签: select types fortran fortran2003

我有这段代码:

    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从文件中读取一个字符并将其返回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(*))行引起的(没有编译的字符功能)。我不明白这里有什么不对,也许你可以帮助我?

1 个答案:

答案 0 :(得分:0)

这绝对是一个编译错误。它与gfortran 4.9中的https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359有关,或直接与此相关{{3}}。请注意,很长一段时间内不支持4.8,我认为版本4.9.4也是4.9的最后一个版本。支持的版本是5和6。