我正在尝试使用Tesseract在Visual Studio之外创建一个项目,但似乎没有任何关于如何执行此操作的文档。
我现在的问题是文件scanutils.cpp调用一个函数open(char *,int,mode_t),这在任何地方都没有定义。这可能是一个Unix功能,它应该位于我的机器上或者应该位于我的机器上某个位置?
谢谢。
编辑:我发现open函数包括在Unix中使用fcntl.h文件,但我的版本(C ++ Builder)不包含open函数。我可以在我自己的文件中定义teh open函数,因为它在Unix中,但这似乎有点鲁莽。有什么建议吗?
答案 0 :(得分:2)
在Microsoft工具中,函数open()
已替换为_open()
中定义的io.h
。 Here (MSDN)您可以找到有关它的更多信息。
答案 1 :(得分: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()
获取Posix文件描述符。
答案 2 :(得分:0)
open()
是标准的UNIX函数。