使用NetCDF.chpl时出现SysCTypes错误



我有一个简单的Chapel程序来测试NetCDF模块:

use NetCDF;
use NetCDF.C_NetCDF;
var f: int = ncopen("ppt2020_08_20.nc", NC_WRITE);
var status: int = nc_close(f);

当我用编译时

chpl -I/usr/include -L/usr/lib/x86_64-linux-gnu -lnetcdf hello.chpl

它会生成一个关于SysCTypes:的错误列表

$CHPL_HOME/modules/packages/NetCDF.chpl:57: error: 'c_int' undeclared (first use this function)
$CHPL_HOME/modules/packages/NetCDF.chpl:77: error: 'c_char' undeclared (first use this function)
...

有人知道我的错误是什么吗?我尝试将use SysCTypes;添加到我的程序中,但似乎没有效果。

对延迟的响应和这种糟糕的行为表示抱歉。这是一个潜入NetCDF模块的错误,Chapel的夜间测试似乎没有发现。要解决此问题,请编辑$CHPL_HOME/modules/packages/NetCDF.chpl,添加行:

public use SysCTypes, SysBasic;

在CCD_ 3模块的声明中(在我的源代码副本中的第50行附近(。如果你考虑将这个bug作为一个问题提交到Chapel GitHub问题跟踪器上,那也太好了,尽管无论如何我们都会在下一个版本中尝试修复它。

有了这个更改,除了nc_close()采用c_int参数而不是Chapelint之外,您的程序几乎可以为我编译。你可以依靠Chapel的类型推断来导致这种情况的发生:

var f = ncopen("ppt2020_08_20.nc", NC_WRITE);

或显式声明fc_int:类型

var f: c_int = ncopen("ppt2020_08_20.nc", NC_WRITE);

最后,我认为您应该能够从chpl命令行中删除-lnetcdf,因为使用NetCDF模块应该会自动添加此要求。

感谢您引起我们的注意!

相关内容

  • 没有找到相关文章

最新更新