C# 调用GDAL编写的动态链接库dll,后不能将生成的图像显示到picturebox上,显示内存不足

今天,为了测试一下dll,并将接口生成的.bmp图像显示到picturebox上时,发生错误,显示内存不足;

开始以为是图片过大,可是检查发现图片64k,这么小怎么可能内存不足呢?又怀疑是显示图片的代码不对?

picturebox.Image = Image.FromFile(@path);

检查以前的工程就是这样用,没有问题,于是手贱贱区双击生成的图像,妈呀,打不开?原来被占用了,突然灵光一现,

将显示图像的代码注释掉,生成图片后,直接双击,依然被占用,只有退出工程之后才能打开,所以,很自然的想到(其实一

点也不自然,试了好长时间才发现的大哭)是不是dll中GDAL本身一直占用图像资源没有释放的原因呢?于是,查看源代码,

发现不知什么时候,把 

GDALDestroyDriverManager();

注释掉了,那么加上之后呢,万事大吉:


但是:注意,这一句销毁驱动管理器需要在最后的最后的最后去做,否则,完犊子。直接表现就是在C#调用DLL时,出现“读取受保护内存”的错误,请参考:GDALDestroyDriverManager 分析


猜你喜欢

转载自blog.csdn.net/xujie126/article/details/55515288