2012-08-29 26 views
2

我正在嘗試將libpng添加到我的iPhone項目中。iPhone項目中使用libpng的問題

我複製了.c和.h文件到自己的目錄「第三方/的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」那樣隨機輸入一些東西,我會收到一個編譯錯誤,顯示它正在解析該頭文件。

任何想法?

回答

3

我有完全相同的問題過去是怎樣幫助我很簡單鑄造 - 因爲如果你看看png.h頭文件,png_sig_cmp定義:

png_sig_cmp(png_const_bytep sig, png_size_t start, png_size_t num_to_check) 

第一個參數是png_const_bytep - 它被定義如:

PNG_CONST png_byte  FAR * png_const_bytep 

其翻譯真如:

const unsigned char* 

我會簡單的類型轉換:

return(!png_sig_cmp((png_const_bytep)buf, (png_size_t)0, PNG_BYTES_TO_CHECK)); 

希望它能幫助!

+0

謝謝。我會嘗試一下。 –