Go GDAL 绑定:在 TileDB-Go 中使用 lukeroth/gdal 时,CPLErr 没有字段或方法“Err”

问题描述 投票:0回答:1

我已在我的系统上安装了 GDAL 和 TileDB 以及所有必要的依赖项。但是,当我尝试运行使用 lukeroth/gdal 和 TileDB-Go 绑定的 Go 项目时,遇到以下错误:

../../../go/pkg/mod/github.com/lukeroth/[email protected]/algorithms.go:325:3: 
CPLErr(func() _Ctype_CPLErr {…}()).Err undefined (type CPLErr has no field or method Err)

GDAL Go 绑定中的 CPLErr 类型似乎没有 Err 字段或方法。我不确定这是否是 GDAL 库和 Go 绑定之间的版本不匹配,或者是否有其他问题导致此错误。

此外,我在使用 TileDB-Go 时还收到有关已弃用函数的警告:

warning: 'tiledb_array_schema_dump' is deprecated [-Wdeprecated-declarations]

版本:

GDAL 3.8.4, released 2024/02/08
Libtiledb.so.2.27
github.com/lukeroth/gdal v0.0.0-20240301124940-d4ff2229365e
github.com/TileDB-Inc/TileDB-Go v0.32.0
c++ go gdal
1个回答
0
投票

请参阅 https://github.com/lukeroth/gdal/pull/102 获取解决方案。

您可以自行修改本地的“algorithms.go”即可。

    return CPLErr(C.GDALContourGenerate(
    src.cval,
    C.double(interval),
    C.double(base),
    C.int(len(fixedLevels)),
    fixedLevels_p,
    C.int(useNoDataValue),
    C.double(noDataValue),
    unsafe.Pointer(layer.cval),
    C.int(idFieldIndex),
    C.int(elevationFieldIndex),
    C.goGDALProgressFuncProxyB(),
    unsafe.Pointer(arg),
)).Err()

    cErr := C.GDALContourGenerate(
    src.cval,
    C.double(interval),
    C.double(base),
    C.int(len(fixedLevels)),
    fixedLevels_p,
    C.int(useNoDataValue),
    C.double(noDataValue),
    unsafe.Pointer(layer.cval),
    C.int(idFieldIndex),
    C.int(elevationFieldIndex),
    C.goGDALProgressFuncProxyB(),
    unsafe.Pointer(arg),
)
return CPLErrContainer{ErrVal: cErr}.Err()
© www.soinside.com 2019 - 2024. All rights reserved.