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()置き換えられます。ここ(MSDN)で、それに関する詳細情報を見つけることができます。_open()io.h

于 2011-10-17T20:28:43.013 に答える
1

open()openは、通常、システム コールを適合システムにラップする Posix 関数です。これは、プラットフォーム固有のかなり「低レベル」の関数です。

同等の機能を提供する移植可能な C 関数は、 の結果がと同じfopen()であるという意味で、です-- ここでは、基になる呼び出しによって返される整数です。open()FILE * fp = fopen(...); int fd = fileno(fp);fdopen()

ところで、標準 C 関数fwrite()およびfread()は Posix 関数read()およびwrite()にマップされます。

FILE*移植性を最大限に高めるために、可能な限り標準の C 関数とデータ構造に固執するようにしてください。必要に応じて、いつでも 経由で Posix ファイル記述子を取得できますfileno()

于 2011-10-17T20:26:49.763 に答える
0

open()UNIX の標準機能です。

于 2011-10-17T20:10:21.250 に答える