MinGW отсутствует sysconf (_SC_NPROCESSORS_ONLN)

Следующий код компилируется и запускается в 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. Загрузите следующие пакеты для MSYS а также MinGW-прибудете:

  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 был извлечен при запросе местоположения
    МинГВ.

  7. Выполните следующую команду, чтобы завершить настройку MSYS и MinGW:

    mingw-get install mingw32-autotools

Я также попробовал это и получил аналогичные ошибки при загрузке последней установки MinGW из Вот и используя интерактивный графический интерфейс установки.

MinGW не поставляется с библиотекой C ++ stblib.h? Если да, разве реализация MinGW не определяет эту обычно используемую функцию c ++? Любая помощь приветствуется.

1

Решение

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

(Наверное, лучше на два месяца позже, чем никогда.)

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]