MinGW 缺少 sysconf(_SC_NPROCESSORS_ONLN)

JHo*_*wIX 2 c++ windows std msys mingw-w64

以下代码在 Linux (CentOS 6.5) 下编译运行

#include <iostream>
#include <stdlib.h>

int main()
{
  long sysval = sysconf(_SC_NPROCESSORS_ONLN);
  std::cout << "Num processors = " << sysval << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但是,在安装 MinGW + MSYS 并尝试在 Windows 机器上编译后,我得到:

error: '_SC_NPROCESSORS_ONLN' was not declared in this scope
error: 'sysconf' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

我遵循的安装 MinGW 和 MSYS 的步骤是:

  1. MSYSMinGW-get下载以下软件包:

  2. 为您的平台下载MinGW包:

  3. 将 MinGW 包解压到 C:\MinGW

  4. 将 MSYS 包解压到 C:\MSYS\

  5. 将 MinGW-get 包解压到与上述步骤 2 中使用的 MinGW 目录 (C:\MinGW) 相同的目录。

  6. 打开 MSYS 命令提示符(从解压缩 MSYS 包的目录运行 MSYS.bat)并通过键入以下命令运行安装后配置脚本:

    /安装后/pi.sh

    对所有问题回答“是”,并在提示输入 MinGW 的位置时提供解压缩 MinGW 包的目录的完整路径。

  7. 运行以下命令完成 MSYS 和 MinGW 的配置:

    mingw-get 安装 mingw32-autotools

我也试过这个,从这里下载最新的 MinGW 安装程序并使用交互式安装 GUI时遇到了类似的错误。

MinGW 没有附带 stblib.h C++ 库吗?如果是,MinGW 实现是否没有定义这个常用的 c++ 函数?任何帮助将非常感激。

小智 5

(stdlib.h 比 C++ 更像是 C,但两者都可以使用它。)

MinGW 用于编译 Windows 程序以在 Windows 上运行;sysconf 是 POSIX(尽管在 stdlib.h 中,这是一个由 C 标准定义的文件;它有点令人困惑),Windows(因此 MinGW)无法理解。(Linux 理解 POSIX,Mac OS X 和 BSD 也是如此。)

如果您的目标是计算处理器数量,请在SYSTEM_INFO 中使用dwNumberOfProcessors。如果您的目标是在 Windows 上运行 POSIX 程序,您需要Cygwin而不是 MinGW。

(我想,迟到两个月总比没有好。)