Я пытаюсь добавить библиотеку dlib в свой проект Qt5. Я построил dlib с gcc 4.9.3, используя CMake без NO_GUI_SUPPORT
(т. Е. С графическим интерфейсом) и без ISO_CPP_ONLY
. Я собрал его в общую библиотеку с CMAKE_INSTALL_PREFIX = my_qt_project_dir/dlib
, установили и включили его в свой проект:Включая dlib в проект Qt
# DLIB
INCLUDEPATH += $$PWD/dlib/include/
LIBS += -L$$PWD/dlib/lib/
LIBS += -ldlib
Я в том числе это заголовки в коде:
#include <dlib/image_processing.h>
#include <dlib/gui_widgets.h>
#include <dlib/image_io.h>
#include <dlib/dir_nav.h>
#include <dlib/opencv.h>
но во время компиляции получить this errors
некоторые из них:
/dlib/include/dlib/image_processing/../matrix/matrix_la.h:64:45: error: macro "sign" passed 2 arguments, but takes just 1
/dlib/include/dlib/image_processing/../matrix/matrix_math_functions.h:83:27: error: expected unqualified-id before 'const'
/dlib/include/dlib/image_processing/../matrix/matrix_la.h:1034:9: error: 'matrix' has not been declared
Я использую C Сделайте 3.3.1, QtCreator 3.4.2, Qt 5.4.2, gcc 4.9.3 работает на gentoo 4.0.9.
Как с этим бороться?
Кто-то # определил слово «знак», и он топает по коду. Выясните, какой код создает знак #define и #include его после других заголовков. –
@DavisKing Я просмотрел с символами ++ с QtCreator и нашли только это 3 определения, связанное с проектом: 1) 'именами dlib' ->' имена impl' -> 'встроенного типа знак (сопзИте тип & Вал)' 2) 'namespace dlib' ->' namespace nric' -> 'inline T sign (const T & a, const T & b)' 3) 'DLIB_DEFINE_FUNCTION_M (op_sign, sign, impl :: sign, 6);' Эти определения всегда находятся под пространствами имен, поэтому с ними не должно быть проблем. Больше похоже, что компилятор не может решить, какое определение использовать. Я попытался указать пространства имен в вызовах, но без каких-либо результатов ... – ElDorado
#define не находится в коде dlib. –