.Net Core 使用 System.Drawing.Common 在CentOS下报错

分类: NetCore

.Net Core MVC 项目,添加了图片上传处理功能,使用了 System.Drawing.Common 引用。

部署CentOS后,提示

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Gdip' threw an exception. ---> System.DllNotFoundException: Unable to load shared library 'libdl' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl: cannot open shared object file: No such file or directory
   at Interop.Libdl.dlopen(String fileName, Int32 flag)
   at System.Drawing.SafeNativeMethods.Gdip.LoadNativeLibrary()
   at System.Drawing.SafeNativeMethods.Gdip..cctor()
   --- End of inner exception stack trace ---
   at System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromDelegate_linux(StreamGetHeaderDelegate getHeader, StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, IntPtr& image)
   at System.Drawing.Image.InitFromStream(Stream stream)
   at System.Drawing.Image.LoadFromStream(Stream stream, Boolean keepAlive)
   at imagetest1.Program.Main(String[] args) in F:\imagetest1\imagetest1\Program.cs:line 13

解决这个问题需要在CentOS中安装 libdl

#locate libdl
/usr/lib64/libdl-2.17.so
/usr/lib64/libdl.so.2
#cd /usr/lib64
#ln -s libdl-2.17.so libdl.so

然后又报另外一个错误:Unable to load DLL 'libgdiplus'

yum install libgdiplus-devel

 

上一篇: centos7安装libgdiplus。netcore生成验证码,处理图片

下一篇: efcore从数据库快速生成实体及context

by 2023-08-07 23:49:02
篇笔记

学习笔记