2009-04-27 4 views
1

컴파일러는 stat.h의 위치를 ​​모르십니까?은 정의되지 않은 struct 컴파일 오류를 사용합니다 - C

오류 : C : 프로젝트 \ \ ADC_HCI \의 mongoose.c는 (745) : 오류 C2079은 : '성'은 source에서 바로 파일을 다운로드 ... 정의되지 않은 구조체 '_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); 
} 

를 사용 .

+1

http://groups.google.com/group/mongoose-users/topics의 몽구스 지원 그룹에 대해 문의하십시오. 관리자는 매우 유용합니다. –

+0

그래, 난 그냥 그룹에 물어 .... –

+1

난 그냥 거기에 게시물을 보았다 - 어떤 종류의 VS 프로젝트를 사용하고 계십니까? IIRC를 사용하려면 다중 스레드 콘솔 응용 프로그램으로 빌드해야합니다. –

답변

3

MSDN를 참조하십시오 _wstat64은 ( 밑줄) struct __stat64의 매개 변수를 사용합니다. 변수 ststruct __stat64으로 다시 선언하십시오.

1

_stat64를 stat64로 변경하십시오. 최소한 내 리눅스 머신에서는 구조의 이름이다. 나는 그것이 Windows에서 다른지 모른다.

2

_stat64__stat64도 POSIX와 같은 표준에 의해 문서화 된 의미에서 '표준'이 아닙니다. 일반적으로 struct stat을 사용합니다. 큰 파일 (2 GiB 이상)에서 작동하는지 걱정한다면 '대용량 파일 지원'을 얻기 위해 플랫폼에 필요한 컴파일 옵션을 확인하십시오. 64 비트 컴퓨터 및 64 비트 컴파일 (Windows 64는 아님)의 경우 일반적으로 걱정할 필요가 없습니다.

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 

다음을 사용하여 대용량 파일 지원을 얻을 수 있습니다. 이들은 적어도 준 표준화되어 있습니다. autoconf과 같은 시스템은 이러한 것들을 자동으로 감지합니다 (그렇게하도록 요청한 경우).

1

SVN 트렁크에 동기화하는 것이 좋습니다. 당신이 SVN 클라이언트가없는 경우

, 단순히 두 파일을 다운로드 : http://mongoose.googlecode.com/svn/trunk/mongoose.h (및 .c 파일도)

이유는 최근에 코드가 리팩토링 것을, 그리고 기능 _stat CRT는 WinAPI를 함께 교체되어 나올 때 하나, GetFileAttributesExW().

관련 문제