3

C++ でデータベース コーディングを行いたいと考えています。ツールボックスに含める最新の C++ ライブラリはどれですか? は、SOCI がクロスプラットフォームで無料の優れたライブラリであることを示しています。しかし、SOCI のインストールは大きな問題です。なぜなら、良いブログ、チュートリアル、記事、または詳細な概要を説明しているものが見つからないからです。SOCI公式ページhttp://soci.sourceforge.net/doc/3.2/installation.htmlの指示に従いましたが、成功した後(ブーストが検出されないため、ブーストなしで実行する必要がありました)cmakeを実行しています、Visual Studio で .sln をビルドすると、4 つのエラーが発生します。私は何日もすべてを試しましたが、何もうまくいかないようです。YouTube には動画が 1 つだけあります https://www.youtube.com/watch?v=gFGLKaDnwmI、しかし、libファイルでマイクロを操作する必要がある方法を示しています。私はそれをしたくありません。そして、評判が良く人気のあるライブラリだと思っていたので、そうする必要はありませんでした。とにかく、ビルド o/p が大きすぎるため、発生したエラーを投稿しました。最初の 1 つは 3 回表示されます。だから、最終結果で4回失敗したと思う理由です。

5>C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt\stdio.h(1935): fatal error C1189: #error:  Macro definition of snprintf conflicts with Standard Library function declaration

8>LINK : fatal error LNK1104: cannot open file '..\..\..\lib\Debug\libsoci_postgresql_3_2.lib'


========== Build: 8 succeeded, 4 failed, 0 up-to-date, 3 skipped ==========

重要ではない別の質問がありますが、参考までに (これについてフラグを立てないでください。必要に応じて削除します)。データベース プログラミングは C++ でそれほど頻繁に行われませんか? それとも、C++ コーダーは C++ API よりも C API を好みますか? Cos、私は良い最近の記事やブログを同じように見つけるのに本当に苦労しました.

4

2 に答える 2

0

ビルドしようとしている soci のバージョンは何ですか? あなたのエラーのあるスレッドを見つけました:

「snprintf」シンボルを再定義する 2 つのインクルード ファイルがあるため、ビルドは失敗します。最初の定義は「D:\devsrc\soci-3.2.3\core\soci-platform.h」にあり、2 番目の定義 (エラーを生成) は「C:\Program Files (x86)\Windows Kits\」にあります。 10\include\10.0.10150.0\ucrt\stdio.h" (標準ライブラリ ファイル)。

エラーを修正するには、「D:\devsrc\soci-3.2.3\core\soci-platform.h」の 27 行目をコメント化します。

// #snprintf _snprintf を定義

、SOCI が独自の定義を無視し、代わりに標準ライブラリの定義を使用するようにします。

ただし、ライブラリの作成者は次のように述べています。

記録として、VS2015 (CL.EXE バージョン 19.00.24215.1) で SOCI 3.2.3 を問題なく、または変更なしでビルドできました。

git clone https://github.com/SOCI/soci.git git co release/3.2 mkdir _build cd _build cmake ..

次に、VS2015 で SOCI.sln をロードしてビルドします。

また、マスターブランチ (別名4.0.0バージョン)のビルドを試みることもできます。

于 2019-05-11T22:07:18.660 に答える