2009-04-27 4 views
1

コンパイラは、stat.hがどこにあるか分かりません。は未定義のstructコンパイルエラーを使用します - 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でマングースのサポートグループでそれについてのお願い - メンテナが非常に便利です。 –

+0

ええ、私はグループにも頼んだだけです.... –

+1

私はあなたの投稿を見ました - どのような種類のVSプロジェクトを使用していますか? IIRCでは、マルチスレッドコンソールアプリケーションとして構築する必要があります。 –

答えて

3

MSDNを参照してください:_wstat64は(アンダースコア)struct __stat64のパラメータを取ります。変数ststruct __stat64に再宣言してください。

1

_stat64をstat64に変更します。少なくとも私のLinuxマシンでは、それは構造体の名前です。私はそれがWindowsで異なるかどうかわからない。

2

_stat64でも__stat64も、POSIXなどの標準で記述されている意味で「標準」ではないことに注意してください。通常はstruct statを使用します。大きなファイル(2GiB以上)で動作するかどうか心配している場合は、プラットフォームに必要なコンパイルオプションを確認して、「大きなファイルのサポート」を取得してください。 64ビットマシンと64ビットコンパイル(必ずしもWindows 64ではない)では、通常は心配する必要はありません。

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 

これらは少なくとも半標準化されています。 autoconfなどのシステムでは、これらのことを自動的に検出します(要求する場合)。

1

SVNトランクに同期することをお勧めします。あなたはSVNクライアントを持っていない場合は

、単に2つのファイルをダウンロードします。 http://mongoose.googlecode.com/svn/trunk/mongoose.h(および.cファイルすぎ)

理由は、最近のコードがリファクタリングされたことがあり、かつ機能_stat CRTはWinAPIので を置換しました1、GetFileAttributesExW()。

関連する問題