2009-04-27 46 views
1

編譯器不知道stat.h的位置在哪裏?使用未定義的結構編譯錯誤 - C

錯誤: C:\項目\ ADC_HCI \ mongoose.c(745):錯誤C2079: 'ST' 使用了未定義的結構 '_stat64'

#include <sys/types.h> 
#include <sys/stat.h> 

static int 
mg_stat(const char *path, struct mgstat *stp) 
{ 
    struct _stat64 st; //<-- ERROR 

    int  ok; 
    wchar_t  wbuf[FILENAME_MAX]; 

    to_unicode(path, wbuf, ARRAY_SIZE(wbuf)); 
    if (_wstat64(wbuf, &st) == 0) { 
     ok = 0; 
     stp->size = st.st_size; 
     stp->mtime = st.st_mtime; 
     stp->is_directory = S_ISDIR(st.st_mode); 
    } else { 
     ok = -1; 
    } 

    return (ok); 
} 

...從source直接下載的文件。

+1

請訪問http://groups.google.com/group/mongoose-users/topics上的mongoose支持小組 - 該維護人員非常有幫助。 – 2009-04-27 19:13:46

回答

3

參見MSDN_wstat64需要的struct __stat64的參數(與下劃線)。重新聲明變量st的類型爲struct __stat64

1

將_stat64更改爲stat64。至少在我的Linux機器中,這是結構的名稱。我不知道它在Windows中是否有所不同。

2

請注意,在任何標準(如POSIX)記錄的意義上,_stat64__stat64都不是「標準」。您通常會使用struct stat;如果您擔心這是否適用於大文件(超過2GB),那麼請檢查您的平臺上需要哪些編譯選項才能獲得「大文件支持」。對於64位機器和64位編譯(不一定是Windows 64),通常不需要擔心。您可以使用經常獲得大文件支持:

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 

這些至少是半標準化。系統(如autoconf)會自動檢測這些事情(如果您要求他們這樣做)。

1

我建議你同步到SVN中繼。

如果你沒有SVN客戶端,只需要下載兩個文件: http://mongoose.googlecode.com/svn/trunk/mongoose.h(和.c文件太)

的原因是,最近的代碼被重構,以及CRT _stat功能被取代 與WinAPI的一,GetFileAttributesExW()。

相關問題