2013-04-22 1 views
1

MinGW으로 32 비트 Windows 7에 PCL 라이브러리를 빌드하려고합니다. outofcore 모듈을 구축 할 때 내가 _fseeki64에 대해 몇 가지 오류 메시지를 가지고 다음 octree_disk_container.h 파일에서`stdio.h` 함수로 템플릿과 이름 찾기

error: there are no arguments to '_fseeki64' that depend on a template parameter, so a declaration of '_fseeki64' must be available 

, 순간에 정의 된

#ifndef WIN32 
#define _fseeki64 fseeko 
#endif 
(AN #error를 생성하는) 내가 테스트 한

WIN32있다 파일 처리 중. _fseeki64이 작은 테스트 프로그램 컴파일로 컴파일러에 사용할 것으로 보인다 : 나는 오류가 사라 _fseeki64fseeko64로 정의하면

#include "stdio.h" 
int main(int argc, char** argv) { 
    FILE* f = fopen("C:/a.txt","r"); 
    if(!f) printf("NOPE"); 
    int seekret = _fseeki64(f,4,SEEK_SET); 
    (void)seekret; 
    return 0; 
} 

과 모듈이 컴파일하지만 나는 동작과 동일합니다 있는지 확실하지 않습니다 fseekofseeki으로 의도되었습니다.

이 문맥에서 _fseeki64을 사용하려면 어떻게해야합니까? 새 기본 클래스를 선언하고 #define을 넣은 다음 Base<T>::_fseeki64과 같은 식으로 입력 했습니까? (here에서 아이디어를 얻었습니다.)

당신의 생각은 무엇입니까?

답변

1

MinGW 시스템이 #define WIN32인데도 _fseeki64은 MinGW가 알고있는 POSIX가 아니라 Microsoft-ism 인 것 같습니다. MinGW에서 POSIX 동작을 사용해야한다고 생각하는데, 이는 fseeko을 사용한다는 것을 의미합니다.

+0

'fseeko'를 사용하면'fseeko'가 인식되지 않으므로 새로운 오류가 발생합니다. 나는'MinGW' 디렉토리를 통해 greyp하고'fseeko64'와'__mingwfseeko64' 만 정의했습니다. 나는'fseeko64'가 올바른 선택이라고 생각하지 않습니까? –

+0

그래, 맞아. –

+0

예! 감사합니다! –