これをMinGW 32ビットで動作させようとして夢中になっています。私が試した他のすべてのプラットフォームで動作します。
私がしたいのは、4GBを超えるファイルのサイズを64ビットintに変換することだけです。
これは他のプラットフォームではうまく動作します:
#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ビットのファイルサイズを決定する正しい方法は何ですか?
ありがとう!