Linker 没有错误,但库的某些函数不';他们不能工作

Linker 没有错误,但库的某些函数不';他们不能工作,linker,shared-libraries,static-libraries,netcdf,Linker,Shared Libraries,Static Libraries,Netcdf,我正在使用cdi(气候数据接口)创建一个netcdf文件。我在文档中做了一个例子来编写一个netcdf文件,它工作正常。但是当第一次使用cdi操作时,它不会创建时间轴。 参见代码: ! Now, we create the output file. ! We first create the grid. gridID = gridCreate(y3D%GridType, NLons * NLats) CALL gridDefXsize(gridID, N

我正在使用cdi(气候数据接口)创建一个netcdf文件。我在文档中做了一个例子来编写一个netcdf文件,它工作正常。但是当第一次使用cdi操作时,它不会创建时间轴。 参见代码:

    ! Now, we create the output file.
        ! We first create the grid.
    gridID = gridCreate(y3D%GridType, NLons * NLats)

    CALL gridDefXsize(gridID, NLons)
    CALL gridDefYsize(gridID, NLats)
    CALL gridDefXvals(gridID, y3D%Lons)
    CALL gridDefYvals(gridID, y3D%Lats)

        ! Now, the z axis to be attached to the variable when created (there is one z axis per variable).
    zaxisID = zaxisCreate(y3D%ZAxisType, 1) ! We only support predictands with one level. 1 creates a surface level.


        ! Now create the variable list
    vlistID = vlistCreate()
        ! And define the variables in the variable list
    Prevision   = vlistDefVar(vlistID, gridID, zaxisID, TIME_VARIABLE)

        ! Now define the variable names
    CALL vlistDefVarName(vlistID, Prevision , "Prevision")


        ! Now the time axis and attach it to the variable list.
    taxisID = taxisCreate(TAXIS_RELATIVE)   !ABSOLUTE)
    write (*,*) "taxisID: ", taxisID
    CALL taxisDefRDate(taxisID, 19000101)
    CALL vlistDefTaxis(vlistID, taxisID)

        ! Now create the file
    streamID = streamOpenWrite(char(ResultsFile), OutType)
    if ( streamID < 0 ) then
        write (*,*) "ERROR while attempting to create the file ", char(ResultsFile), " to store the results."
        write (*,*) cdiStringError(streamID)
        stop
    end if
        ! Assign the variable list to the dataset
    CALL streamDefVlist(streamID, vlistID)

        ! Now we have to loop over the time steps to store the data.
    DO tsID = 0, NDates - 1
        ! Set the verification date
        write (*,*) "Date ", ar_DatesPredicted(tsID+1)
        CALL taxisDefVdate(taxisID, ar_DatesPredicted(tsID+1))
        ! Set the verification time to 12:00:00
        CALL taxisDefVtime(taxisID, 120000)
        ! Define the time step
        status = streamDefTimestep(streamID, tsID)
        write (*,*) "Number of records of the time step: ", status

        ! Write values of each variable
        CALL streamWriteVar(streamID, Prevision, ar_y_2DPrev(tsID+1, c_predictands)%Values, NMiss)

    END DO

    ! Close the output stream
    CALL streamClose(streamID)

    ! Destroy the objects
    CALL vlistDestroy(vlistID)
    CALL taxisDestroy(taxisID)
    CALL zaxisDestroy(zaxisID)
    CALL gridDestroy(gridID)        
!现在,我们创建输出文件。
! 我们首先创建网格。
gridID=gridCreate(y3D%GridType,NLons*NLats)
调用gridDefXsize(gridID,NLON)
调用gridDefYsize(gridID,NLats)
调用gridDefXvals(gridID,y3D%Lons)
调用gridDefYvals(gridID,y3D%Lats)
! 现在,创建时要附加到变量的z轴(每个变量有一个z轴)。
zaxisID=zaxisCreate(y3D%ZAxisType,1)!我们只支持一个级别的predictands。1创建曲面标高。
! 现在创建变量列表
vlistID=vlistCreate()
! 并在变量列表中定义变量
Prevision=vlistDefVar(vlistID、gridID、zaxisID、TIME_变量)
! 现在定义变量名
调用vlistDefVarName(vlistID,Prevision,“Prevision”)
! 现在单击时间轴并将其附加到变量列表。
taxisID=taxisCreate(TAXIS\u相对)!(绝对值)
写入(*,*)“taxisID:”,taxisID
呼叫taxisDefRDate(taxisID,19000101)
呼叫vlistDefTaxis(vlistID,taxisID)
! 现在创建文件
streamID=streamOpenWrite(char(ResultsFile),OutType)
如果(streamID<0),则
尝试创建文件char(ResultsFile)以存储结果时写入(*,*)错误
写入(*,*)cdiStringError(streamID)
停止
如果结束
! 将变量列表分配给数据集
调用streamdefflist(streamID,vlistID)
! 现在我们必须循环时间步来存储数据。
DO tsID=0,数据为-1
! 设置验证日期
写入(*,*)“日期”,预计应收账款日期(tsID+1)
调用TaxisDevDate(taxisID,ar_日期预测(tsID+1))
! 将验证时间设置为12:00:00
呼叫TaxisDevTime(taxisID,120000)
! 定义时间步长
状态=streamDefTimestep(streamID,tsID)
写入(*,*)“时间步长的记录数:”,状态
! 写入每个变量的值
调用streamWriteVar(streamID,Prevision,ar_y_2dprov(tsID+1,c_predictands)%值,NMiss)
结束
! 关闭输出流
调用streamClose(streamID)
! 摧毁这些物体
调用vlistDestroy(vlistID)
呼叫taxisDestroy(taxisID)
调用zaxisDestroy(zaxisID)
调用gridDestroy(gridID)
已解决!:

这个问题的原因是我安装了两个版本的cdi库。 一个是使用system package manager安装的,另一个是手动安装在我的主目录中。 我与第一个链接以构建一些对象,并与另一个链接以构建其他对象。 一旦同一版本被广泛使用,问题就消失了

因此,这是一条一般规则:不要将同一个库的不同版本混合在一起进行链接


感谢所有试图帮助我的人。

当我说没有创建时间轴时,我的意思是当我用ncdump打开创建的netcdf文件时,它没有显示任何时间轴。