我正在尝试将 libpng 添加到我的 iPhone 项目中。
我将 .c 和 .h 文件复制到它们自己的目录“thirdparty/libpng/”中,并将 png.h 包含在我的纹理类中:
#ifndef PNG_H
#include "thirdparty/libpng/png.h"
#endif
在这一点上,我的项目编译得很好,没有警告和错误。
接下来,我尝试添加一个函数来检查纹理是否为 png,并且在 png_sig_cmp 上出现编译错误,即使包含 png.h:
#define PNG_BYTES_TO_CHECK 4
int GETexture::CheckIfValidPNGTexture( const char* pTextureName, FILE **ppFp )
{
char buf[PNG_BYTES_TO_CHECK];
/* Open the prospective PNG file. */
if ((*ppFp = fopen(pTextureName, "rb")) == NULL)
return 0;
/* Read in some of the signature bytes */
if (fread(buf, 1, PNG_BYTES_TO_CHECK, *ppFp) != PNG_BYTES_TO_CHECK)
return 0;
/* Compare the first PNG_BYTES_TO_CHECK bytes of the signature.
Return nonzero (true) if they match */
return(!png_sig_cmp(buf, (png_size_t)0, PNG_BYTES_TO_CHECK)); // <- COMPILE ERROR
}
我得到的错误是:没有匹配函数调用'png_sig_cmp'
标题肯定会被包括在内。如果我尝试在其中输入一些随机的东西,比如“sdfdd”,我会得到一个编译错误,表明它正在解析那个头文件。
有任何想法吗?