Я хотел бы использовать библиотеку LEMUR с QT, но мне нужна помощь.
У меня есть инструкции там: инструкции
makeFile.app содержит:
# compiling C++ code
%.o: %.cpp
$(CXX) $(CXXFLAGS) -o $@ -c $<
%: %.o
$(CXX) $(CXXFLAGS) -o $@ $< $(CPPLDFLAGS)
prefix = /usr/local
exec_prefix = ${prefix}
INC = ${prefix}/include
#antlr is already set up properly for include path
LIBPATH = ${exec_prefix}/lib
LIB = lemur
CXX = g++
CFLAGS = -DPACKAGE_NAME=\"Lemur\" -DPACKAGE_TARNAME=\"lemur\" -DPACKAGE_VERSION=\"4.12\" -DPACKAGE_STRING=\"Lemur\ 4.12\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DHAVE_LIBM=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBZ=1 -DHAVE_NAMESPACES= -DISNAN_IN_NAMESPACE_STD= -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FSEEKO=1 -DHAVE_MKSTEMP=1 -DHAVE_MKSTEMPS=1 -DHAVE_EXT_ATOMICITY_H=1 -DP_NEEDS_GNU_CXX_NAMESPACE=1 -DNDEBUG=1 -g -O3 -I$(INC)
CXXFLAGS = -DPACKAGE_NAME=\"Lemur\" -DPACKAGE_TARNAME=\"lemur\" -DPACKAGE_VERSION=\"4.12\" -DPACKAGE_STRING=\"Lemur\ 4.12\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DHAVE_LIBM=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBZ=1 -DHAVE_NAMESPACES= -DISNAN_IN_NAMESPACE_STD= -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FSEEKO=1 -DHAVE_MKSTEMP=1 -DHAVE_MKSTEMPS=1 -DHAVE_EXT_ATOMICITY_H=1 -DP_NEEDS_GNU_CXX_NAMESPACE=1 -DNDEBUG=1 -g -O3 -I$(INC)CPPLDFLAGS = -L$(LIBPATH) -l$(LIB) -lz -lpthread -lm
## specify your object files here
OBJS = main.cpp
## specify your program here
PROG = Qt4
all: $(PROG)
$(PROG): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^ $(CPPLDFLAGS)
clean:
rm $(PROG) $(OBJS)
В конце я написал QT4 как мою программу и main.cpp как мой объект, но он не работает. Я получил ошибку в моем терминале, когда я запустил make -f MakeFile.app
main.cpp: 1: 35: фатальная ошибка: QtCore / QCoreApplication: нет файла или нет папки этого типа
Если я компилирую, используя кнопку сборки с QT, я получаю эту ошибку:
In file included from /usr/local/include/indri/ref_ptr.hpp:21:0,
from /usr/local/include/indri/Repository.hpp:26,
from /usr/local/include/LemurIndriIndex.hpp:25,
from ../CBIRTest/main.cpp:9:
/usr/local/include/indri/atomic.hpp: In function 'void indri::atomic::increment(indri::atomic::value_type&)':
/usr/local/include/indri/atomic.hpp:51:33: error: '__atomic_add' was not declared in this scope
/usr/local/include/indri/atomic.hpp:51:33: note: suggested alternative:
/usr/include/c++/4.6/ext/atomicity.h:51:3: note: '__gnu_cxx::__atomic_add'
/usr/local/include/indri/atomic.hpp: In function 'void indri::atomic::decrement(indri::atomic::value_type&)':
/usr/local/include/indri/atomic.hpp:55:35: error: '__atomic_add' was not declared in this scope
/usr/local/include/indri/atomic.hpp:55:35: note: suggested alternative:
/usr/include/c++/4.6/ext/atomicity.h:51:3: note: '__gnu_cxx::__atomic_add'
В моем проекте QT у меня есть только файл .pro и main.cpp
В моем файле .pro у меня есть для библиотеки и путь
INCLUDEPATH += I/usr/local/include/ \
LIBS += -L/usr/local/lib \
main.cpp
#include <QtCore/QCoreApplication>
#include "opencv2/calib3d/calib3d.hpp"#include "opencv2/core/core.hpp"#include "opencv2/features2d/features2d.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/nonfree/features2d.hpp"#include "opencv2/nonfree/nonfree.hpp"#include "lemur-compat.hpp"#include "LemurIndriIndex.hpp"#include "lemur-platform.h"int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
Кто-нибудь может мне помочь с этим?
Поблагодарить
Прямо перед директивой включения #include "lemur-blah blah.h"
добавлять
using namespace __gnu_cxx;
Это связано с директивой препроцессора P_NEEDS_GNU_CXX_NAMESPACE