5

Visual Studio 2008 で Windows Mobile 用の zlib をコンパイルしようとしています。

ただし、それはエラーにつながります。ファイル zconf.h には、ファイル sys/types.h が含まれています。

このファイルは標準の Visual Studio インクルード ディレクトリにありますが、Windows Mobile SDK に付属のフォルダー ce/include には sys サブフォルダーがなく、ここには types.h ファイルがありません。

したがって、zlb はコンパイルされません。

それはどのように解決されるべきですか?

更新: include 自体は #if ブロックにあります。具体的には:

#ifdef STDC
#  ifndef Z_SOLO
#    include <sys/types.h>      /* for off_t */
#  endif
#endif

それは別の質問をもたらします。Z_SOLO マクロの意味は何ですか? それは #ifdef や zlib の中に散らばっていますが、それを検索しても、どうあるべきかについての手がかりは得られません。ちなみに、定義されていません。

4

3 に答える 3

8

Z_SOLO外部ライブラリを使用せずに zlib をコンパイルして使用するために使用されます組み込み環境で使用するためのものです。関数はなくgz*、メモリ割り当てに依存する他のいくつかの関数も取り出されます ( compress()uncompress())。ベースの zlib 初期化関数 (例: deflateInit()) には、メモリ割り当て関数を提供する必要があります。これにより、標準の C ライブラリ ヘッダーと関数を持たない Windows Mobile で発生するすべての問題を回避できます。

使用するには、先頭近くZ_SOLOに編集する必要がありますzconf.h#define Z_SOLO次に、zlib をコンパイルし、編集した .xml で使用しzconf.hます。( のみでコンパイルしZ_SOLO、 を編集しないzconf.h場合、コンパイルされた zlib をヘッダー ファイルで使用しようとすると、めちゃくちゃになります。)

于 2012-10-17T13:51:46.990 に答える
1

私がCodePlex に出力したStudio プロジェクト ファイルを完備したソースを取得するだけです。

于 2012-10-17T14:07:33.747 に答える
0

Z_SOLO を定義し、プロジェクトからすべての gz ファイルを除外すると、正しくコンパイルできます。

gz (gzguts.h、gzread.c など) ファイルには fcntl.h が含まれていますが、これも ce nclude フォルダーに存在しないため、移動する必要があります。

于 2012-10-17T10:34:32.033 に答える