我要疯了,试图让它在 MinGW 32 位中工作。它适用于我尝试过的所有其他平台。
我要做的就是将 > 4GB 文件的大小转换为 64 位整数。
这在其他平台上运行良好:
#define _FILE_OFFSET_BITS 64
#include <sys/stat.h>
int64_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
return -1;
}
根据我在网上找到的各种建议,我尝试在上述代码之前添加以下定义:
#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1
#define __USE_LARGEFILE64 1
也试过:
#ifdef __MINGW32__
#define off_t off64_t
#endif
最后尝试将 -D_FILE_OFFSET_BITS=64 添加到 gcc 标志(应该与上面的定义相同......)
没运气。返回的 int64_t 仍被截断为 32 位值。
在 MinGW 32 位中确定 64 位文件大小的正确方法是什么?
谢谢!