我刚刚使用this sh file编译了leptonica和tesseract二进制文件。我用lipo -info
检查了文件,结果如下:
Architectures in the fat file: /Users/username/Desktop/tess/lib/libtesseract_all.a are: armv7s armv7 i386 x86_64 arm64
Architectures in the fat file: /Users/username/Desktop/tess/lib/liblept.a are: armv7s armv7 i386 x86_64 arm64
我认为它应该意味着它支持64位架构。但是当我在我的项目中导入并使用它时,这就是我得到的:
ld: warning: ignoring file /Users/username/Desktop/project/projectname/tesseract-ios-lib-master/lib/libtesseract_all.a, missing required architecture x86_64 in file /Users/username/Desktop/project/projectname/tesseract-ios-lib-master/lib/libtesseract_all.a (3 slices)
ld: warning: ignoring file /Users/username/Desktop/project/projectname/tesseract-ios-lib-master/lib/liblept.a, missing required architecture x86_64 in file /Users/username/Desktop/project/projectname/tesseract-ios-lib-master/lib/liblept.a (3 slices)
Undefined symbols for architecture x86_64:
"tesseract::TessBaseAPI::GetBoxText(int)", referenced from:
-[Tesseract characterBoxes] in Tesseract.o
"tesseract::TessBaseAPI::GetIterator()", referenced from:
-[Tesseract getConfidences:] in Tesseract.o
"tesseract::TessBaseAPI::GetUTF8Text()", referenced from:
-[Tesseract recognizedText] in Tesseract.o
"tesseract::TessBaseAPI::SetVariable(char const*, char const*)", referenced from:
-[Tesseract setVariableValue:forKey:] in Tesseract.o
-[Tesseract loadVariables] in Tesseract.o
"tesseract::TessBaseAPI::SetRectangle(int, int, int, int)", referenced from:
-[Tesseract setRect:] in Tesseract.o
"tesseract::TessBaseAPI::Init(char const*, char const*, tesseract::OcrEngineMode, char**, int, GenericVector<STRING> const*, GenericVector<STRING> const*, bool)", referenced from:
tesseract::TessBaseAPI::Init(char const*, char const*) in Tesseract.o
"tesseract::TessBaseAPI::Version()", referenced from:
+[Tesseract version] in Tesseract.o
"tesseract::TessBaseAPI::SetImage(Pix const*)", referenced from:
-[Tesseract setImage:] in Tesseract.o
"tesseract::TessBaseAPI::Recognize(ETEXT_DESC*)", referenced from:
-[Tesseract recognize] in Tesseract.o
"tesseract::TessBaseAPI::TessBaseAPI()", referenced from:
-[Tesseract initPrivateWithDataPath:language:] in Tesseract.o
"tesseract::ImageThresholder::GetPixRect()", referenced from:
-[Tesseract setImage:] in Tesseract.o
"tesseract::ImageThresholder::SetImage(unsigned char const*, int, int, int, int)", referenced from:
-[Tesseract setImage:] in Tesseract.o
"tesseract::ImageThresholder::ImageThresholder()", referenced from:
-[Tesseract setImage:] in Tesseract.o
"tesseract::PageIterator::BoundingBox(tesseract::PageIteratorLevel, int*, int*, int*, int*) const", referenced from:
-[Tesseract getConfidences:] in Tesseract.o
"tesseract::LTRResultIterator::Confidence(tesseract::PageIteratorLevel) const", referenced from:
-[Tesseract getConfidences:] in Tesseract.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这让我无法在AppStore上更新我的应用程序,因为Apple宣布从2月1日开始的所有应用程序都必须支持64位。