C ++ 0x с Qt Creator - PullRequest
       22

C ++ 0x с Qt Creator

13 голосов
/ 15 февраля 2011

Я пытаюсь использовать новые функции C ++ 0x в Qt Creator под Windows (Qt Creator 2.0.1).

Я читаю ветку Конфигурирование переключателей компилятора GCC в Qt, Qt Creator и QMake и добавление QMAKE_CXXFLAGS += -std=c++0x в файл .pro.

После этого Qt Creator выдает мне очень странные ошибки в этом простом коде:1012 *

#include <memory>

int main()
{
}

Ошибки компиляции:

':: swprintf' не был объявлен

':: vswprintf' не был объявлен

Я пытаюсь скомпилировать свой код из командной строки с помощью команды g++ test.cpp --std=c++0x и получаю ту же ошибку.

Так что же не так с компилятором Qt MinGW ?Возможно ли использовать функции C ++ 0x в Qt Creator?

1 Ответ

3 голосов
/ 15 февраля 2011

Во-первых, возможно, что заголовки библиотеки просто не отображают свои зависимости должным образом.Попробуйте добавить #include <cstdio> и, возможно, (к сожалению) using namespace std; в ваш файл вверху.

Если этого не произойдет, у некоторых людей возникли проблемы с MinGW и swprintf. В этом списке рассылки предлагается добавить следующее:

#ifdef WIN32
#define swprintf _snwprintf
#endif

Посмотрите, решит ли это проблему.(Вы также хотите, чтобы он находился в самом верху файла.)

Если добавление рандомных определений в ваш источник кажется вам плохой идеей, я предлагаю использовать -D флаги сборки, чтобы условно внедрить указанное выше определениекогда вы строите на MinGW.

См. также это короткое обсуждение о различиях между swprintf на MinGW и другими компиляторами.

Наконец, все остальные неудачи1019 * эта ссылка , кажется, связывает проблему с проблемой с флагами, которые включают __STRICT_ANSI__ в MinGW, и предлагает закомментировать пару строк в одном из заголовков MinGW, чтобы исправить проблему.Я бы предложил добавить вместо них более простой #ifndef __STRICT_ANSI__, если вы решите пойти с этим хаком.

...