【问题标题】:Tesseract and Visual C++ 2015正方体和 Visual C++ 2015
【发布时间】: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


【解决方案1】:

你至少要添加以下依赖:

tesseract.lib;openjpeg.lib;libwebp.lib;libtiff.lib;libtesseract.lib;libpng.lib;liblept.lib;libjpeg.lib;jbig2enc.lib;giflib.lib;zlib.lib;

PropertyPages / 链接器 / 输入 / 附加依赖项

注意你的配置Debug/Release X64 ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多