关于POM程序和Libpng使用中出现的一些问题

安装Libpng

这篇文章写得很清楚,照着安装没啥问题。
https://blog.csdn.net/weixin_38176039/article/details/82020865

一些问题

1.在运行POM的C语言版本程序时,需要先安装Libpng,然后运行POM安装程序出现下面报错。
/usr/local/include/png.h:458:16: note: forward declaration of ‘png_info {aka struct png_info_def}’
typedef struct png_info_def png_info;
src/rgb_image.cc:220:50: error: invalid use of incomplete type ‘png_info {aka struct png_info_def}’
关于POM程序和Libpng使用中出现的一些问题_第1张图片
查找了网上资料,有可能是引用第三方库的问题,也有可能是版本问题,总之不好使。于是我修改了POM源码,在rgb_image.cc中,这种info_ptr->rowbytes的指针全部改为调用Libpng的函数。例如,
// _width = info_ptr->width;
_width = png_get_image_width(png_ptr, info_ptr);
// _height = info_ptr->height;
_height = png_get_image_height(png_ptr, info_ptr);
// color_type = info_ptr->color_type;
color_type = png_get_color_type(png_ptr, info_ptr);
// bit_depth = info_ptr->bit_depth;
bit_depth = png_get_bit_depth(png_ptr, info_ptr);
// channels = info_ptr->channels;
channels = png_get_channels(png_ptr, info_ptr);
问题得到解决。成功编译。

2.在运行https://github.com/YaluLiu/POM的main.py时,出现引用错误“ModuleNotFoundError: No module named ‘parsepom’”,猜想应该是上一步的环境没有配置好。
首先上一步make成功之后,项目文件夹里会多一个parsepom.cpython-36m-x86_64-linux-gnu.so的文件;将这个文件放进你的环境文件夹里,例如我的“/home/fair/anaconda3/envs/zls_pom/lib/python3.7/site-packages”里面,另外,由于我用的是python3.7,因此文件名要修改一下,不然找不到:parsepom.cpython-37m-x86_64-linux-gnu.so,这样就可以了。

参考文献

[1] https://blog.csdn.net/weixin_34121304/article/details/85900399
[2] https://www.cnblogs.com/z1141000271/p/10289365.html

你可能感兴趣的:(编码中一些问题,c++)