Конфликт между qDebug и SDL

Я работаю над Mac OS 10.8.5 и Qt 5.1.1, среди прочего, с классом qdebug, который хорошо работает с некоторыми проектами и не компилируется с некоторыми другими. Я уже пытался переустановить Qt, который ничего не изменил.

Это, конечно, связано с использованием библиотеки SDL (?!), но раньше она работала нормально. Вот часть вывода компиляции:

In file included from ../../Stage/Joker/tests/SDLTest/main.cpp:7:
In file included from /Applications/QT/5.1.1/clang_64/include/QtCore/QDebug:1:
In file included from /Applications/QT/5.1.1/clang_64/include/QtCore/qdebug.h:46:
In file included from /Library/Frameworks/QtCore.framework/Headers/qhash.h:46:
/Library/Frameworks/QtCore.framework/Headers/qchar.h:76:5: error: unknown type name 'QT_ASCII_CAST_WARN_CONSTRUCTOR'
    QT_ASCII_CAST_WARN_CONSTRUCTOR QChar(char c);
    ^

При необходимости я могу предоставить дополнительные выходные данные или неработающие классы Qt.

Я создаю свой код с помощью Qt => Build => Run. К сожалению, я не могу воспроизвести код на другом компьютере.

Вот файл pro (который хорошо работает со всеми моими коллегами, кроме меня):

TEMPLATE = app

SOURCES += main.cpp
OBJECTIVE_HEADERS += ../../libs/PhGraphic/SDLMain.h
OBJECTIVE_SOURCES += ../../libs/PhGraphic/SDLMain.m
LIBS += -framework Cocoa
QMAKE_CXXFLAGS += -F/Library/Frameworks
QMAKE_OBJECTIVE_CFLAGS += -F/Library/Frameworks
LIBS += -F/Library/Frameworks

LIBS += -framework SDL -framework SDL_image -framework SDL_ttf

person Thomas Ayoub    schedule 02.10.2013    source источник


Ответы (2)


Однажды у меня возникла эта проблема после установки программного обеспечения: оно создало QtCore.framework в папке /Library/Framework, которая переопределяла QtCore вашего текущего комплекта Qt (из-за на QMAKE_CXXFLAGS += -F/Library/Frameworks).

person Martin Delille    schedule 02.10.2013
comment
Ты прав! Кроме того, эта знаменитая линия помогла моим коллегам с SDL, пока я был в отпуске, мой начальник предупредил меня об этом, но я не сделал ссылку. Большое спасибо! - person Thomas Ayoub; 02.10.2013
comment
Очень интересно. Это действительно означает, что qmake должен поддерживать указание порядка включения библиотек. Нужно иметь возможность указать, что Qt предшествует некоторым другим библиотекам. - person Kuba hasn't forgotten Monica; 02.10.2013

  1. Это qDebug, и есть две перегрузки:

    • функция возврата потока

      qDebug() << "foo";
      
    • функция в стиле printf

      qDebug("foo");
      
  2. Вам необходимо предоставить минимальный воспроизводимый тестовый пример, чтобы мы могли вам помочь.

  3. Как вы строите свой код? Вы используете qmake для создания Makefile? Нам нужно увидеть как минимум файл .pro, и пожалуйста уменьшите его, удалив бесполезные стандартные комментарии и т. д.

person Kuba hasn't forgotten Monica    schedule 02.10.2013
comment
Я отредактировал свой пост с более простым фрагментом, который тоже не работает - person Thomas Ayoub; 02.10.2013