我有一个使用 GDAL 和 GDAL.Native 包的 .NET Core C# Web 项目。一切在本地运行良好,但在发布到 Debian 服务器后,它会报告一堆消息,例如
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/osr_wrap.so:无法打开共享对象文件:没有这样的文件或目录 /var/www/appRoot/osr_wrap.so:无法打开共享对象文件
我的gitlab脚本是:
build-backend:
stage: build-backend
image: mcr.microsoft.com/dotnet/sdk:latest
script:
- cd appDir
- dotnet restore
- dotnet build --configuration Release
- rsync -av --delete bin/Release/net8.0/ /var/www/appRoot/
项目的其他组件在发布后运行良好。我错过了什么?
那么,您至少缺少一个共享对象。很可能你错过了更多。我对 C#/gdal 绑定知之甚少,但所有各种语言绑定(c/c++ 之外)都需要一个绑定层,高级语言(在您的情况下为 C#)可以调用该绑定层,进而调用所需的 GDAL 功能。一个简单的搜索就会发现这个:
gdal_csharp.dll
ogr_csharp.dll
osr_csharp.dll
gdalconst_csharp.dll
gdal_wrap.dll
ogr_wrap.dll
osr_wrap.dll
gdalconst_wrap.dll
我假设 debian 安装需要等效的 .so 包装器