0

我正在尝试在 Visual Studio 以外的其他东西中使用 Tesseract 创建一个项目,但似乎没有任何关于如何执行此操作的文档。

我现在遇到的问题是文件 scanutils.cpp 调用了一个函数 open(char *, int, mode_t) 并且没有在任何地方定义。这可能是一个 Unix 函数,它从我的机器上滑过或应该位于我的机器上的某个地方吗?

谢谢你。

编辑:我发现 open 函数包括在 Unix 中使用 fcntl.h 文件,但我拥有的它的版本(C++ Builder)不包括 open 函数。我可以像在 Unix 中一样在自己的文件中定义 open 函数,但这似乎有点鲁莽。有什么建议么?

4

3 回答 3

2

在 Microsoft 工具中,该函数open()被替换为_open(),在 中定义io.h在这里(MSDN),您可以找到有关它的更多信息。

于 2011-10-17T20:28:43.013 回答
1

open()是一个 Posix 函数,通常将open系统调用包装在符合标准的系统中。这是一个相当“低级”的功能,非常特定于平台。

提供等效功能的可移植 C 函数是fopen(),从某种意义上说,结果open()FILE * fp = fopen(...); int fd = fileno(fp);- 这里fd是底层open()调用返回的整数。

顺便说一下,标准 C 函数fwrite()fread()映射到 Posix 函数read()write()

尽量坚持使用标准的 C 函数和FILE*数据结构,以获得最大的可移植性。如有必要,您始终可以通过fileno().

于 2011-10-17T20:26:49.763 回答
0

open()是一个标准的 UNIX 函数。

于 2011-10-17T20:10:21.250 回答