You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows编译Tesseract示例遇LNK2001错误,如何生成正确lib?

编译Tesseract C++示例时的链接器错误排查

在Windows环境下编译Tesseract的基础C++示例,从预构建包获取libtesseract-5.dll后生成了libtesseract-5.lib,但遇到以下链接器错误:

1>tessm.obj : error LNK2001: unresolved external symbol "public: void __thiscall tesseract::TessBaseAPI::End(void)" (?End@TessBaseAPI@tesseract@@QAEXXZ)
1>tessm.obj : error LNK2001: unresolved external symbol "public: char * __thiscall tesseract::TessBaseAPI::GetUTF8Text(void)" (?GetUTF8Text@TessBaseAPI@tesseract@@QAEPADXZ)
1>tessm.obj : error LNK2001: unresolved external symbol "public: void __thiscall tesseract::TessBaseAPI::SetImage(struct Pix *)" (?SetImage@TessBaseAPI@tesseract@@QAEXPAUPix@@@Z)
1>tessm.obj : error LNK2001: unresolved external symbol "public: int __thiscall tesseract::TessBaseAPI::Init(char const *,char const *,enum tesseract::OcrEngineMode,char * *,int,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const *,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const *,bool)" (?Init@TessBaseAPI@tesseract@@QAEHPBD0W4OcrEngineMode@2@PAPADHPBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@3_N@Z)
1>tessm.obj : error LNK2001: unresolved external symbol "public: __thiscall tesseract::TessBaseAPI::TessBaseAPI(void)" (??0TessBaseAPI@tesseract@@QAE@XZ)

已执行的解决步骤:

  • 从libtesseract-5.dll提取导出函数列表创建exports.def文件:
    dumpbin /exports libtesseract-5.dll > exports.def
    
  • 编辑exports.def内容如下:
    LIBRARY libtesseract-5.dll
    EXPORTS
        TessAltoRendererCreate    @1
        TessBaseAPIAdaptToWordStr @2
        TessBaseAPIAllWordConfidences @3
        TessBaseAPIAnalyseLayout  @4
        TessBaseAPIClear  @5
        TessBaseAPIClearAdaptiveClassifier    @6
        TessBaseAPIClearPersistentCache   @7
        TessBaseAPICreate @8
        TessBaseAPIDelete @9
    
  • 使用exports.def生成libtesseract-5.lib:
    lib /def:exports.def /OUT:libtesseract-5.lib /MACHINE:X86
    
  • 添加libtesseract-5.lib链接后仍出现上述错误。

测试环节:
为确认libtesseract-5.dll和libtesseract-5.lib的导出函数序号一致,生成并对比dll.txt和lib.txt,确认二者导出函数数量和名称均相同:

dumpbin /exports libtesseract-5.dll > dll.txt

dumpbin /exports libtesseract-5.lib > lib.txt

使用/verbose链接选项后得到以下日志,显示已正确添加libtesseract-5.lib和libleptonica.lib:

1>Searching libraries
1>    Searching ..\lib\leptonica\leptonica-1.74.0.lib:
1>    Searching D:\work\Test\YR\x86\OCR\libtesseract-5.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\kernel32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\user32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\gdi32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\winspool.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\comdlg32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\advapi32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\shell32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\ole32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\oleaut32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\uuid.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\odbc32.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x86\odbccp32.lib:
1>    Searching C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\lib\x86\msvcprt.lib:
1>    Searching C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\lib\x86\MSVCRT.lib:
1>      Found ___scrt_stub_for_acrt_initialize
1>        Loaded MSVCRT.lib(ucrt_stubs.obj)
1>      Found __filter_x86_sse2_floating_point_exception_default
1>        Loaded MSVCRT.lib(x86_exception_filter.obj)
1>    Searching C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\lib\x86\OLDNAMES.lib:
1>    Searching C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\lib\x86\vcruntime.lib:
1>    Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x86\ucrt.lib:
1>Finished searching libraries

请问还需要检查或测试哪些内容才能生成正确的libtesseract-5.lib?

内容的提问来源于stack exchange,提问作者sehon song

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:53:12