1

MongoDB C ドライバーを正常にコンパイルし、テスト スクリプトも実行しましたが、自分で書いたスクリプトをコンパイルできません。

以下は、コマンドとそのエラー出力です。

$ gcc -Isrc --std=c99 ./src/*.c -I ./src/ tutorial.c -o tutorial -D_POSIX_C_SOURCE=200112L

./src/env_win32.c:27:53: fatal error: ws2tcpip.h: No such file or directory
compilation terminated.

ディレクトリにファイル名ws2tcpip.hがないことがわかりました/usr/include

4

1 に答える 1

0

を取り出して./src/*.c、gcc に /src ディレクトリ内のすべての c プログラムをコンパイルするように指示します。このディレクトリには、いくつかの Windows のみのプログラムが含まれています。

私にとってうまくいったlibmongoc.soのは、ドライバーがビルドされたときにビルドされたものを含めるようにgccに指示することでした。

次のコマンドは私にとってはうまくいきました。私のドライバーはディレクトリ「mongo-c-driver」にあります。

gcc --std=c99 -I mongo-c-driver/src -o tutorial tutorial.c mongo-c-driver/libmongoc.so

私の意見では、mongodb C API ドキュメントは、この分野で少しバグがあります。また、最新のヘッダー ファイルは、チュートリアルに示されているソース コードと一致しません。たとえばmongo-insert、v0.6 ヘッダーには 4 つのパラメーターが必要ですが、チュートリアルでは 2 つのパラメーターのみが示されています。

この問題を調査し、自分で mongoDB と C ドライバーをインストールして再現しようとしているときに、ドライバーの v0.6 が、関数write_concernに 4 番目のパラメーターを追加するサポートを追加することで、以前のバージョンの API との互換性を壊していることを発見しました (これにより、mongo_insertに設定してnullください)。ディレクトリで提供されるexample.cプログラムはdocs/examples、v0.6 ではコンパイルされません。このバグは、 c-driverの github のパッチCDRIVER-157に記載されています。

于 2012-08-09T02:13:34.340 に答える