【问题标题】:Conflict between qDebug and SDLqDebug 和 SDL 之间的冲突
【发布时间】:2013-10-02 12:38:39
【问题描述】:

我在 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

【问题讨论】:

    标签: qt sdl qtcore


    【解决方案1】:

    我曾经在安装软件后遇到过这个问题:它在 /Library/Framework 文件夹中创建了一个 QtCore.framework,它覆盖了您当前 Qt 的 QtCore套件(由于 QMAKE_CXXFLAGS += -F/Library/Frameworks)。

    【讨论】:

    • 你是对的!此外,这条著名的线路在我度假时帮助我的同事使用 SDL,我的老板对此提出了警告,但我没有建立链接。非常感谢!
    • 非常有趣。这确实意味着 qmake 需要支持指定库包含顺序。需要能够指定 Qt 出现在其他一些库之前。
    【解决方案2】:
    1. qDebug,有两个重载:

      • 一个流返回函数

        qDebug() << "foo";
        
      • 一个 printf 风格的函数

        qDebug("foo");
        
    2. 您需要提供最低限度的可重现测试用例,以便我们为您提供帮助。

    3. 您是如何构建代码的?您是否使用 qmake 来生成 Makefile?我们至少需要查看 .pro 文件,通过删除无用的样板 cmets 等将其最小化。

    【讨论】:

    • 我用更简单的 sn-p 编辑了我的帖子,但也不起作用
    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2012-06-27
    • 2012-03-06
    • 2011-05-02
    • 2012-11-25
    • 2013-10-27
    • 2014-03-02
    相关资源
    最近更新 更多