2014-03-31 19 views
1

下面的代码编译和运行Linux(CentOS的6.5)MinGW的缺失的sysconf(_SC_NPROCESSORS_ONLN)

#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 

的步骤intall 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得到安装的mingw32-自动工具

我也尝试过这一点,并得到了类似的错误,当从here下载最新的MinGW安装程序并使用交互式安装GUI。

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

回答

4

(stdlib.h中比C++更℃,但都可以使用它。)

MinGW的是编译Windows程序在Windows上运行; sysconf是POSIX(尽管存在于stdlib.h中,这是一个由C标准定义的文件;有点令人困惑),哪些Windows(以及MinGW)无法理解。 (Linux可以理解POSIX,就像Mac OS X和BSD一样)。

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

(我猜比较好,从来没有迟到过两个月)