2014-03-31 20 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。

(我猜比較好,從來沒有遲到過兩個月)