以下代码在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的步骤是:
下载适用于您平台的MinGW软件包:
将MinGW包提取到C:\ MinGW
将MSYS包解压缩到C:\ MSYS \
将MinGW-get软件包解压缩到与MinGW相同的目录 目录(C:\ MinGW)在上面的步骤2中使用。
打开MSYS命令提示符(从目录中运行MSYS.bat 提取了MSYS包并运行安装后配置脚本 通过键入以下命令:
/postinstall/pi.sh
对所有问题回答“是”并提供目录的完整路径 提示输入位置时提取MinGW包的位置 MinGW。
运行以下命令以完成MSYS和MinGW的配置:
mingw-get install mingw32-autotools
从here下载最新的MinGW安装程序并使用交互式安装GUI时,我也尝试了这个并遇到了类似的错误。
MinGW不附带stblib.h C ++库吗?如果是这样,MinGW实现是否没有定义这个常用的c ++函数?任何帮助将不胜感激。
答案 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。
(比我从未迟到两个月,我猜。)