【发布时间】:2016-02-24 13:05:50
【问题描述】:
我正在尝试在 C++ 应用程序中使用 tesseract,但我无法让它在 Visual Studio 中运行。我收到了几个“错误 LNK2001:无法解析的外部符号”,我相信这是因为 Visual Studio 找不到我要使用的 dll。我已经完成了Using Tesseract OCR in VC++ 上的所有细节。所有的 tesseract 库都链接在正确的位置,但仍然无法使其工作。这是我的代码的样子:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
using namespace std;
int main(int argc, char *argv[])
{
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng")) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
// Open input image with leptonica library
Pix *image = pixRead("C:\\Users\\Marcio\\PythonProjects\\python_ocr.png");
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
printf("OCR output:\n%s", outText);
// Destroy used object and release memory
api->End();
delete[] outText;
pixDestroy(&image);
return 0;
}
编辑:这是我收到的完整错误消息:
1>CallPythonFromC++.obj : error LNK2001: unresolved external symbol "public: int __cdecl tesseract::TessBaseAPI::Init(char const *,char const *,enum tesseract::OcrEngineMode,char * *,int,class GenericVector const *,class GenericVector const *,bool)" (?Init@TessBaseAPI@tesseract@@QEAAHPEBD0W4OcrEngineMode@2@PEAPEADHPEBV?$GenericVector@VSTRING@@@@3_N@Z)
1>CallPythonFromC++.obj : error LNK2001: unresolved external symbol "public: __cdecl tesseract::TessBaseAPI::TessBaseAPI(void)" (??0TessBaseAPI@tesseract@@QEAA@XZ)
1>CallPythonFromC++.obj:错误 LNK2001:无法解析的外部符号 pixRead
1>CallPythonFromC++.obj : error LNK2001: unresolved external symbol "public: void __cdecl tesseract::TessBaseAPI::SetImage(struct Pix const *)" (?SetImage@TessBaseAPI@tesseract@@QEAAXPEBUPix@@@Z)
1>CallPythonFromC++.obj : error LNK2001: unresolved external symbol "public: char * __cdecl tesseract::TessBaseAPI::GetUTF8Text(void)" (?GetUTF8Text@TessBaseAPI@tesseract@@QEAAPEADXZ)
1>CallPythonFromC++.obj : error LNK2001: unresolved external symbol "public: void __cdecl tesseract::TessBaseAPI::End(void)" (?End@TessBaseAPI@tesseract@@QEAAXXZ)
1>CallPythonFromC++.obj : error LNK2001: unresolved external symbol pixDestroy
1>C:\Users\Marcio\BlindSight\CallPythonFromCPP\x64\Release\CallPythonFromC++.exe : 致命错误 LNK1120: 7 unresolved externals
【问题讨论】:
-
我们需要更多信息。从 Visual Studio 复制并粘贴完整的相关文本。此外,该库显然具有 C++ 接口,因此您的构建环境必须与构建环境匹配。库(下至服务包)。目前尚不清楚构建环境是什么。应该是,但即便如此,如果您无法更改构建环境,并且无法下载适合您的库,那么您应该下载源代码并构建您自己的 Tesseract 库。最后,也许您可以通过适当的Google forum 获得更多帮助
-
如何确定我的构建环境应该是什么以及如何更改它?抱歉,这里是 Visual Studio 和 C++ 新手。
-
您将问题标记为 Visual Studio 2015。那是您的构建环境。在您的位置,我会下载 Tesseract 源代码并构建库。或者在适当的谷歌论坛寻求帮助。并构建 Leptonica 库。
-
查看这个关于 tesseract 的简短但有效的教程:youtu.be/2fmzooBKp8A
标签: c++ visual-c++ visual-studio-2015 tesseract