C ++ / Qt

时间:2015-06-25 04:39:57

标签: c++ qt include static-libraries tesseract

我正在尝试将Tesseract OCR库包含到我的Qt项目中。我按照说明完成了所有工作,但它不起作用。

tesseract::TessBaseAPI *myOCR =
            new tesseract::TessBaseAPI();

错误 - 未定义对`tesseract :: TessBaseAPI :: TessBaseAPI()'

的引用

我认为,这是一个问题,但我不确定。看看.pro文件(只有必要的代码):

unix|win32: LIBS += -L$$PWD/../../Tesseract-OCR/lib/ -llibtesseract302

INCLUDEPATH += $$PWD/../../Tesseract-OCR/include/tesseract
DEPENDPATH += $$PWD/../../Tesseract-OCR/include/tesseract

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../../Tesseract-OCR/lib/libtesseract302.lib

unix|win32: LIBS += -L$$PWD/../../Tesseract-OCR/lib/ -lliblept168

INCLUDEPATH += $$PWD/../../Tesseract-OCR/include/leptonica
DEPENDPATH += $$PWD/../../Tesseract-OCR/include/leptonica

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../../Tesseract-OCR/lib/liblept168.lib

DEFINES += _tagBLOB_DEFINED
DEFINES += USE_STD_NAMESPACE
DEFINES += WINDLLNAME=\\\"lib$$TARGET.dll\\\"
DEFINES += VERSION=\\\"$$VERSION\\\"
DEFINES -= UNICODE

INCLUDEPATH += C:/Tesseract-OCR/tesseract-ocr/api
INCLUDEPATH += C:/Tesseract-OCR/tesseract-ocr/ccmain
INCLUDEPATH += C:/Tesseract-OCR/tesseract-ocr/ccutil
INCLUDEPATH += C:/Tesseract-OCR/tesseract-ocr/ccstruct
INCLUDEPATH += C:/Tesseract-OCR/tesseract-ocr/include

LIBS += C:/Tesseract-OCR/lib/liblept168-static-mtdll.lib
LIBS += C:/Tesseract-OCR/lib/giflib416-static-mtdll.lib
LIBS += C:/Tesseract-OCR/lib/libjpeg8c-static-mtdll.lib
LIBS += C:/Tesseract-OCR/lib/libtiff394-static-mtdll.lib
LIBS += C:/Tesseract-OCR/lib/zlib125-static-mtdll.lib

TessBaseAPI的每个函数都有相同的错误。

1 个答案:

答案 0 :(得分:0)

首先:"未定义的引用" 表示liker找不到合适的静态库,所以请看这个方向。

根据thisthisthis Tesseract需要libtesseract.lib(.a),还需要liblept.lib(.a)。

我建议您最初不要非常喜欢你的.pro文件,只是尝试构建并运行最低限度(我怀疑它只需要这两个库而可能某些DLL)。

另外,我建议您在.pro文件中指定要链接的库,如下所示:

LIBS += -L" C:/Tesseract-OCR/lib/" -llept

甚至更好(如果您的库被复制到项目文件夹中)

LIBS += -L" $$_PRO_FILE_PWD_/Tesseract-OCR/lib/" -llept

喜欢这个

LIBS +=  C:/Tesseract-OCR/lib/liblept.lib