编译pano13的一些注意事项

短命女 2022-08-27 13:52 317阅读 0赞

作者:朱金灿

来源:http://blog.csdn.net/clever101

  1. pano是一个开源图像拼接库,pano13就是它的1.3版本。今天编译这个库,发现需要注意一个地方。pano是依赖于png库的。我设置依赖的png库的版本是1.5.12。在编译pano13出现下面错误:

错误285error C2037: “jmpbuf”的左侧部分指定未定义的结构/联合“png_struct_def”e:\src\Test\libpano13-2.9.17\png.c64

错误287error C2037: “jmpbuf”的左侧部分指定未定义的结构/联合“png_struct_def”e:\src\Test\libpano13-2.9.17\png.c173

错误286error C2168: “_setjmp”: 内部函数的实参太少e:\src\Test\libpano13-2.9.17\png.c64

错误288error C2168: “_setjmp”: 内部函数的实参太少e:\src\Test\libpano13-2.9.17\png.c173

  1. 发现需要在编译png库需要设置预处理器:PNG\_SETJMP\_SUPPORTEDpano13工程中同样需要设置预处理器:PNG\_SETJMP\_SUPPORTED

然后在pano13工程需要修改两处代码:

将64行的if (setjmp(png_ptr->jmpbuf))改为if(png_jmpbuf(png_ptr)),将174行的if (setjmp(png_ptr->jmpbuf))改为if(png_jmpbuf(png_ptr))。

原因是png的头文件中有说明:

This function should be used by libpng applications in place of longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it will use it; otherwise it will call PNG_ABORT(). This function was added in libpng-1.5.0.

  1. 还有一个错误是编译png.c时出现png\_struct\_def结构体无法识别的错误,解决办法是在\#include "png.h"下面增加一行代码:\#include <pnginfo.h>

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读