编译器不知道stat.h在哪里?
错误: c:\ Projects \ ADC_HCI \ mongoose.c(745):错误C2079:'st'使用未定义的struct'_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下载文件。
答案 0 :(得分:3)
请参阅MSDN:_wstat64
的参数为struct __stat64
(两个下划线)。将变量st
重新声明为struct __stat64
类型。
答案 1 :(得分:2)
请注意,_stat64
和__stat64
在任何标准(如POSIX)记录的意义上都不是“标准”。您通常会使用struct stat
;如果您担心这是否适用于大文件(超过2 GiB),那么请检查平台上需要哪些编译选项以获得“大文件支持”。对于64位计算机和64位编译(不一定是Windows 64),您通常不必担心。您通常可以使用以下方式获得大文件支持:
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
这些至少是半标准化的。 autoconf
等系统会自动检测这些内容(如果您要求他们这样做)。
答案 2 :(得分:1)
将_stat64更改为stat64。至少在我的Linux机器中,这是结构的名称。我不知道它在Windows中是否有所不同。
答案 3 :(得分:1)
我建议您同步到SVN中继。
如果您没有SVN客户端,只需下载两个文件: http://mongoose.googlecode.com/svn/trunk/mongoose.h(和.c文件)
原因是最近代码被重构,并且CRT _stat函数被替换 使用WinAPI,GetFileAttributesExW()。