【问题标题】:Problem with configuring c++ project in QtCreator在 QtCreator 中配置 c++ 项目的问题
【发布时间】:2019-05-27 19:21:30
【问题描述】:

我有一些 c++ 代码(Snowboy 演示 - demo.cc)并使用 g++ 在我的 RaspPI Zero 上成功构建它:

g++ -D_GLIBCXX_USE_CXX11_ABI=0 -fPIC -I../../ -std=c++0x -Wall -Wno-sign-compare -Wno-unused-local-typedefs -Winit-self -rdynamic -DHAVE_POSIX_MEMALIGN -Iportaudio/install/include -O3    demo.cc portaudio/install/lib/libportaudio.a ../..//lib/rpi/libsnowboy-detect.a   -ldl -lm -Wl,-Bstatic -Wl,-Bdynamic -lrt -lpthread portaudio/install/lib/libportaudio.a -L/usr/lib/atlas-base -lf77blas -lcblas -llapack_atlas -latlas -lasound -o demo

为了调试它,我尝试使用 QtCreator 并创建 Qt 项目文件:

QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle

HEADERS += demo.h
SOURCES += \
        demo.cc

INCLUDEPATH += ../../
INCLUDEPATH += portaudio/install/include

LIBS += -Lportaudio/install/lib \
    -lportaudio \
    -L../../lib/rpi -lsnowboy-detect \
    -L/usr/lib/atlas-base \
    -ldl -lm -lrt -lpthread \
    -lf77blas -lcblas -llapack_atlas -latlas -lasound

但在 QtCreator 中使用此配置时,我收到构建错误:

/home/pi/Prj/snowboy/examples/C++/demo.cc:213: error: undefined reference to `snowboy::SnowboyDetect::SnowboyDetect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'

我是否忘记在 Qt 项目文件中指定与 g++ 一起使用的任何参数?

你有没有可能告诉我一种在 Raspb Pi 零中调试具有外部依赖关系的 c++ 代码的简单方法?

【问题讨论】:

    标签: c++ qt qt-creator qmake


    【解决方案1】:

    Snowboy 出于某种不敬虔的原因要求您使用 -D_GLIBCXX_USE_CXX11_ABI=0(谷歌搜索)。您的命令行中有此标志,这在 Snowboy 的上下文中是正确的,但在您的 .pro 文件中缺少它。添加它。

    QMAKE_CPPFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0
    

    或类似的东西。

    您也可以尝试将语言标准选项降级为 C++98(不推荐,但如果您的演示未使用任何特定于 c++11 的代码,则应该可以使用)。


    我个人认为,任何在 2019 年仍在使用 -D_GLIBCXX_USE_CXX11_ABI=0 的软件都需要报废或分叉,但不管你的船是什么。

    【讨论】:

    • 谢谢。 QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0' fix this error. But now I have next one, look like it Portaudio issue: /home/pi/Prj/snowboy/examples/C++/demo.cc:71:错误:未定义引用PaUtil_WriteRingBuffer'
    【解决方案2】:

    这个问题帮助我在 qt-creator 上成功运行 Snowboy 演示。

    我会给这个问题一个更全面的答案,以帮助更多的人:你只需将代码添加到 .pro 文件中:

        QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0
        LIBS+= /home/zhurui/QtProject/Test/lib/libsnowboy-detect.a \
           -ldl -lm -lrt -lpthread \
           /home/zhurui/QtProject/Test/portaudio/install/lib/libportaudio.a \
           -L/usr/lib/atlas-base \
           -lf77blas -lcblas -llapack_atlas \
           -latlas -lasound
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多