首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C编译Tesseract OCR

用C编译Tesseract OCR
EN

Stack Overflow用户
提问于 2018-04-28 21:43:03
回答 1查看 936关注 0票数 1

是否有可能在不链接C++标准库的情况下将Tesseract ORC编译为纯C语言?

我编译了Tesseract following the instructions here,它工作得很好。但当我将它与sample c program from the docs链接时,它给出了以下错误:

代码语言:javascript
复制
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in libtesseract.a(libtesseract_api_la-baseapi.o)
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in libtesseract.a(libtesseract_api_la-baseapi.o)
  "std::__1::cin", referenced from:
      tesseract::TessBaseAPI::ProcessPagesInternal(char const*, char const*, int, tesseract::TessResultRenderer*) in libtesseract.a(libtesseract_api_la-baseapi.o)

显然,它试图链接C++标准库。有没有可能在没有C++标准库的情况下将其编译为纯c语言?我希望最终在没有标准库支持的情况下为arm-7进行交叉编译。

这是我的makefile (不,答案不是将gcc转换为g++。我想编译成c):

代码语言:javascript
复制
CFLAGS = -c -Wall -I../src/api/ -I../src/ccstruct -I../src/ccutil -I../leptonica/src/ -I../leptonica/build/src

default: main

main.o: main.c
    gcc $(CFLAGS) -c main.c -o main.o

main: main.o
    gcc main.o ../leptonica/lib/nodebug/liblept.a ../src/api/.libs/libtesseract.a -o main

clean:
    -rm -f *.o
    -rm -f main
EN

回答 1

Stack Overflow用户

发布于 2018-04-28 22:25:31

通常,C++应用程序在几种方式上需要/依赖于C++标准库。因此,您应该提供依赖项,或者,如果您确实想要避免它,则静态链接它。此外,避免多次静态链接标准库(如果您的几个基于C++的依赖项需要的话)。

话虽如此,完全避免使用C++标准库的下一个目标要难得多。你不仅必须提供C++标准类型和函数的替代实现(或者修改库以避免使用它们),而且还必须处理其他几个问题:异常、RTTI、启动代码和构造函数、调用编译器生成的特殊函数(如memcpy )、链接到libgcc……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50077188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档