Следующий код компилируется и запускается в 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:
Загрузите следующие пакеты для MSYS а также MinGW-прибудете:
Скачать MinGW Пакет для вашей платформы:
Извлеките пакет MinGW в C: \ MinGW
Извлеките пакет MSYS в C: \ MSYS \
Извлеките пакет MinGW-get в тот же каталог, что и MinGW
каталог (C: \ MinGW), используемый на шаге 2 выше.
Откройте командную строку MSYS (запустите MSYS.bat из каталога, в котором
Пакет MSYS был извлечен) и запустите сценарий настройки после установки
введя следующую команду:
/postinstall/pi.sh
Ответьте «да» на все вопросы и укажите полный путь к каталогу
где пакет MinGW был извлечен при запросе местоположения
МинГВ.
Выполните следующую команду, чтобы завершить настройку MSYS и MinGW:
mingw-get install mingw32-autotools
Я также попробовал это и получил аналогичные ошибки при загрузке последней установки MinGW из Вот и используя интерактивный графический интерфейс установки.
MinGW не поставляется с библиотекой C ++ stblib.h? Если да, разве реализация MinGW не определяет эту обычно используемую функцию c ++? Любая помощь приветствуется.
(stdlib.h больше C, чем C ++, но оба могут использовать его.)
MinGW предназначен для компиляции программ Windows для работы в Windows; sysconf — это POSIX (несмотря на то, что он находится в stdlib.h, файле, определенном стандартом C; это немного сбивает с толку), который Windows (и, следовательно, MinGW) не может понять. (Linux понимает POSIX, как Mac OS X и BSD.)
Если ваша цель состоит в подсчете процессоров, используйте dwNumberOfProcessors в СИСТЕМНАЯ ИНФОРМАЦИЯ. Если ваша цель — запускать программы POSIX в Windows, вы хотите Cygwin, не MinGW.
(Наверное, лучше на два месяца позже, чем никогда.)
Других решений пока нет …