在QtCreator中配置c ++项目的问题

时间:2019-05-27 19:21:31

标签: c++ qt qt-creator qmake

我有一些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 0中具有外部依赖项的c ++代码?

2 个答案:

答案 0 :(得分:1)

Snowboy出于某种不可思议的原因,要求您使用-D_GLIBCXX_USE_CXX11_ABI=0(在Google上搜索)。您的命令行中有此标志,在Snowboy的上下文中这是正确的,但在.pro文件中丢失了该标志。添加它。

QMAKE_CPPFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0

或类似的东西。

您还可以尝试将语言标准选项降级为C ++ 98(不建议这样做,但是如果您的演示未使用任何c ++ 11特定的代码,则应该可以使用。)


我个人认为,2019年仍在使用-D_GLIBCXX_USE_CXX11_ABI=0的任何软件都必须报废或派生,但任何使您无所适从的事情。

答案 1 :(得分:1)

这个问题有助于我在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
相关问题