1

我正在尝试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;
} 

如果我定义_fseeki64fseeko64错误消失并且模块编译,但我不确定行为是否与fseeko预期的行为相同fseeki

那么,我该怎么做才能_fseeki64在这种情况下使用呢?也许声明一个新的基类,把它#define放在那里然后像这样调用它Base<T>::_fseeki64?(从这里得到想法)

你觉得呢?你有没有什么想法?

4

1 回答 1

1

所以问题似乎是您的 MinGW 系统确实如此#define WIN32,但_fseeki64它是 Microsoft 主义,而不是 MinGW 所知道的 POSIX 事物。我认为您应该在 MinGW 上使用 POSIX 行为,这意味着使用fseeko.

于 2013-04-22T12:38:27.003 回答