Проблема с настройкой проекта c ++ в QtCreator - PullRequest
0 голосов
/ 27 мая 2019

У меня есть некоторый код на C ++ (демонстрация Snowboy - demo.cc), и я успешно собрал его на своем RaspPI Zero, используя g ++:

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&)'

Я забыл указать какие-либо параметры, которые использовались с g ++ в файле проекта Qt?

Возможно, вы посоветуете мне простой способ отладки кода C ++ с внешними зависимостями в нуле Raspb Pi?

1 Ответ

1 голос
/ 27 мая 2019

Snowboy по какой-то безбожной причине требует от вас -D_GLIBCXX_USE_CXX11_ABI=0 (Google). У вас есть этот флаг в командной строке, который является правильным в контексте Snowboy, но отсутствует в вашем .pro-файле. Добавьте его.

QMAKE_CPPFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0

или что-то в этом роде.

Вы также можете попробовать понизить стандартную опцию вашего языка до C ++ 98 (не рекомендуется, но должно работать, если ваша демонстрационная версия не использует какой-либо специфичный для c ++ 11 код).


Лично я считаю, что любое программное обеспечение, которое все еще использует -D_GLIBCXX_USE_CXX11_ABI=0 в 2019 году, должно быть утилизировано или разветвлено, но все, что плавает на вашей лодке.

...