MinGW缺少sysconf(_SC_NPROCESSORS_ONLN)

时间:2014-03-31 16:55:33

标签: 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;
}

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

error: '_SC_NPROCESSORS_ONLN' was not declared in this scope
error: 'sysconf' was not declared in this scope

我执行MinGW和MSYS的步骤是:

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

  2. 下载适用于您平台的MinGW软件包:

  3. 将MinGW包提取到C:\ MinGW

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

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

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

      

    /postinstall/pi.sh

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

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

      

    mingw-get install mingw32-autotools

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

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

1 个答案:

答案 0 :(得分:4)

(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。

(比我从未迟到两个月,我猜。)