1

编译器不知道 stat.h 在哪里?

错误:c:\Projects\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);
}  

...直接从下载文件。

4

4 回答 4

3

请参阅MSDN_wstat64采用参数struct __stat64(带有两个下划线)。将您的变量st重新声明为 type struct __stat64

于 2009-05-24T16:33:32.177 回答
2

请注意,在任何标准(例如 POSIX)记录的意义上,“标准”_stat64都不是“标准”。__stat64您通常会使用struct stat; 如果您担心这是否适用于大文件(超过 2 GiB),请检查您的平台上需要哪些编译选项以获得“大文件支持”。对于 64 位机器和 64 位编译(不一定是 Windows 64),您通常无需担心。您通常可以使用以下方法获得大文件支持:

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

这些至少是半标准化的。诸如autoconf自动检测这些事情的系统(如果您要求他们这样做)。

于 2009-05-24T16:43:36.283 回答
1

将 _stat64 更改为 stat64。至少在我的 Linux 机器上是这个结构的名称。我不知道它在Windows中是否有所不同。

于 2009-05-05T13:08:20.823 回答
1

我建议你同步到 SVN 中继。

如果您没有 SVN 客户端,只需下载两个文件: http: //mongoose.googlecode.com/svn/trunk/mongoose.h(以及 .c 文件)

The reason is that recently the code was refactored, and CRT _stat function was substituted with WinAPI one, GetFileAttributesExW().

于 2009-07-05T23:17:31.773 回答