簡體   English   中英

構建tesseract3培訓模塊時出現意外錯誤:“未在此范圍內聲明”

[英]Unexpected errors when building tesseract3 training modules: “not declared in this scope”

試圖建立的Tesseract 3.03培訓模塊,說明這里

這是在64位Win 7機器上的cygwin下的。

當我make training我得到:

make[1]: Entering directory '/cygdrive/c/code/tools/tesseract-ocr-3.03-rc1/training'
/bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I..  -O2 -DNDEBUG -DUSE_STD_NAMESPACE -DPANGO_ENABLE_ENGINE -I../ccmain -I../api -I../ccutil -I../ccstruct -I../viewer -I../textord -I../dict -I../classify -I../display -I../wordrec -I../cutil  -I/usr/local/include -I/usr/local/include/leptonica -D_REENTRANT -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/freetype2 -I/usr/include/libpng15   -std=c++11 -MT pango_font_info.lo -MD -MP -MF .deps/pango_font_info.Tpo -c -o pango_font_info.lo pango_font_info.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -O2 -DNDEBUG -DUSE_STD_NAMESPACE -DPANGO_ENABLE_ENGINE -I../ccmain -I../api -I../ccutil -I../ccstruct -I../viewer -I../textord -I../dict -I../classify -I../display -I../wordrec -I../cutil -I/usr/local/include -I/usr/local/include/leptonica -D_REENTRANT -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/freetype2 -I/usr/include/libpng15 -std=c++11 -MT pango_font_info.lo -MD -MP -MF .deps/pango_font_info.Tpo -c pango_font_info.cpp  -DDLL_EXPORT -DPIC -o .libs/pango_font_info.o
pango_font_info.cpp: In function 'void tesseract::InitFontconfig()':
pango_font_info.cpp:151:66: error: 'setenv' was not declared in this scope
   setenv("FONTCONFIG_PATH", FLAGS_fontconfig_tmpdir.c_str(), true);
                                  ^
pango_font_info.cpp: In member function 'bool tesseract::PangoFontInfo::ParseFontDescription(const PangoFontDescription*)':
pango_font_info.cpp:219:46: error: 'strcasestr' was not declared in this scope
   is_fraktur_ = (strcasestr(family, "Fraktur") != NULL);
                          ^
Makefile:839: recipe for target 'pango_font_info.lo' failed
make[1]: *** [pango_font_info.lo] Error 1
make[1]: Leaving directory '/cygdrive/c/code/tools/tesseract-ocr-3.03-rc1/training'
Makefile:890: recipe for target 'training' failed
make: *** [training] Error 2

training/pango_font_info.cpp的頂部看起來像這樣:

#ifdef HAVE_CONFIG_H
#include "config_auto.h"
#endif

#ifdef MINGW
// workaround for stdlib.h and putenv
#undef __STRICT_ANSI__
#include "strcasestr.h"
#endif  // MINGW
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/param.h>
#include <algorithm>

#include "pango_font_info.h"
#include "commandlineflags.h"
#include "fileio.h"
#include "normstrngs.h"
#include "tlog.h"
#include "unichar.h"
#include "util.h"
#include "pango/pango-context.h"
#include "pango/pango-font.h"
#include "pango/pango-glyph-item.h"
#include "pango/pango-glyph.h"
#include "pango/pango-layout.h"
#include "pango/pango-utils.h"
#include "pango/pangocairo.h"
#include "pango/pangofc-font.h"

因此,特別是包含stdlib.h 那么,為什么找不到例如setenv呢?

謝謝

當我編譯最新的tesseract-ocr時,我僅得到第二個錯誤:

pango_font_info.cpp: In member function 'bool tesseract::PangoFontInfo::ParseFontDescription(const PangoFontDescription*)':
pango_font_info.cpp:219:46: error: 'strcasestr' was not declared in this scope
   is_fraktur_ = (strcasestr(family, "Fraktur") != NULL);

我通過將#include "strcasestr.h"#ifdef MINGW塊中移出來修復了它。

之后,我得到了這個錯誤:

libtool: link: g++ -std=gnu++11 -Wl,-no-undefined -Wl,--as-needed -o .libs/set_unicharset_properties.exe set_unicharset_properties.o  -    L/usr/local/lib ./.libs/libtesseract_training.a ./.libs/libtesseract_tessopt.a -licuin -licuuc ../api/.libs/libtesseract.dll.a -lws2_32 /usr/local/lib/liblept.dll.a -lz -lpng -ljpeg -ltiff -lwebp -L/usr/local/lib
/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/../../../../x86_64-pc-cygwin/bin/ld: cannot find -licuin
collect2: error: ld returned 1 exit status
Makefile:808: recipe for target 'set_unicharset_properties.exe' failed
make[1]: *** [set_unicharset_properties.exe] Error 1
make[1]: Leaving directory '/opt/src/tesseract-ocr/training'
Makefile:890: recipe for target 'training' failed
make: *** [training] Error 2

我是通過運行cp /lib/libicui18n.dll.a /lib/libicuin.dll.a修復的,該命令僅創建了ICU庫的副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM