3

我正在 VisualStudio 2005 中构建 Qt 4.8.1,但遇到了编译器找不到的问题_fileno

经过一番研究,我发现在 stdio.h 它有

#ifdef  _POSIX_
_CRTIMP __checkReturn int __cdecl fileno(__in FILE * _File);
#else
_CRTIMP __checkReturn int __cdecl _fileno(__in FILE * _File);
#endif

然后我查看了qt代码,发现qfsfilengine_win.cpp和qfilesystemengine_win.cpp都有

#define _POSIX_

在我看来,这将是一个错误,如果我删除这些行,它似乎可以成功构建。

有谁知道为什么要定义这些文件_POSIX_

谢谢。

4

1 回答 1

1

看来这确实是Qt中的一个错误。如果您在没有预编译头文件的情况下为 Windows 构建 Qt 并遇到此问题,只需删除#define _POSIX_qfsfilengine_win.cpp 和 qfilesystemengine_win.cpp 中的调用,它就会成功构建。

于 2012-04-05T17:42:23.997 回答