Я пытаюсь построить PCL
библиотека в 32-битной Windows 7 с MinGW
, При строительстве outofcore Модуль получил несколько сообщений об ошибках _fseeki64
:
error: there are no arguments to '_fseeki64' that depend on a template parameter, so a declaration of '_fseeki64' must be available
в octree_disk_container.h
файл, есть
#ifndef WIN32
#define _fseeki64 fseeko
#endif
Я проверил (генерируя #error
) а также WIN32
определяется в момент обработки файла. _fseeki64
похоже, что он доступен для компилятора, так как эта маленькая тестовая программа компилирует:
#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;
}
Если я определю _fseeki64
как fseeko64
ошибки исчезают, и модуль компилируется, но я не уверен, будет ли поведение таким же fseeko
как и предполагалось fseeki
,
Итак, что я могу сделать, чтобы использовать _fseeki64
в данном контексте? Может быть, объявив новый базовый класс, поместив #define
там и затем называя это как Base<T>::_fseeki64
? (получил идею от Вот)
о чем ты думаешь?
Таким образом, проблема заключается в том, что ваша система MinGW делает #define WIN32
, еще _fseeki64
это Microsoft, а не POSIX, о которой знает MinGW. Я думаю, что вы должны использовать поведение POSIX на MinGW, что означает использование fseeko
,
Других решений пока нет …