【发布时间】:2015-06-25 04:39:57
【问题描述】:
我正在尝试将 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 的每个函数都有相同的错误。
【问题讨论】:
-
您要在什么操作系统上构建?对于 *nix,您不应该为库名称加上“lib”前缀。
-
我会确保 .pro 中没有为 lib 定义“命名空间中的所有内容”(如果有的话,可能是该库是用非命名空间的名称,因此,虽然包含文件有效,但符号不匹配)
-
库已链接,但APPRCASH有错误,与libtesseract-3.dll连接。如果我将更多 dll 添加到 .pro 文件中,则会发生另一个错误:Qt 停止程序并显示错误 -1072365566。你能帮帮我吗?
标签: c++ qt include static-libraries tesseract