2

Visual Studio 2010 プロジェクトに MySQL Connector/C++ を追加しようとしています。

手順 (ここでは mysql docs ) に従って Visual Studio に追加しました (「追加のインクルード ディレクトリ」にも Boost を追加しました)。

「sqlstring.h」ファイル(リリースでファイルが見つからないのはどうしてですか?!)を要求されたので、ソースファイル(mysqlソースアーカイブ)から入手しました。

次に、libmyql.lib を要求したところ、MySQL Server 5.5\lib の lib ディレクトリがありました。

そして今、私はこのエラーにいます:

エラー 127 エラー LNK1120: 31 の未解決の外部 C:\Users\Haks\Documents\Visual Studio 2010\Projects\ProductManager\Debug\ProductManager.exe ProductManager

エラー 60 エラー LNK2001: 未解決の外部シンボル"__declspec(dllimport) bool __cdecl std::operator<<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z) C:\Users\Haks\Documents\Visual Studio 2010\Projects\ProductManager\ProductManager\mysqlcppconn-static.lib(mysql_ps_resultset.obj) ProductManager

つまり、MySQL Connector/C++ 1.1 のバイナリ リリースを入手したためで、VS 2010 と互換性がないためかもしれません...

しかし、ソース ファイルをコンパイルする良い方法が見つかりません。また、Boost や CMake を使用したことがなく、必要なようです。

私の問題への参照が見つからなかったので、誰かが応答または良い方法を取得した場合、それは私と多くの人にとって非常に役立つと思います.

ありがとうございました

4

3 に答える 3

6

まず第一に、正しい方向を示してくれた dar7yl に感謝します。

mysql 接続 (VS 2010、C++) のデバッグに多くの時間を費やした後、非常に身の毛がよだつような経験になったので、それについて何か言わざるを得ません。(C++ インクルード ファイル ディレクトリとリンク ディレクトリ + 追加の依存ファイルを正しくセットアップしたと仮定します。それ以外の場合は、ポイント 2 の Web サイトを参照してください)

0.) はい、boost ライブラリが必要です。ブースト ライブラリをダウンロードし (google を検索)、開発フォルダーに展開し、C++ の追加のインクルード ディレクトリがそれを指すようにします (ブーストの子ディレクトリではなく、メイン ディレクトリをブーストします)。

1.) VS ソリューション構成モードの「デバッグ」と「リリース」の違いを明確にする必要があります。ディレクトリ ...\mysql\Connector C++ ____\lib\ の下に MYSQL を完全にインストールした後に提供される .lib ファイルには、2 つのデバッグ ディレクトリと、ソリューション モード「デバッグ」および「リリース」での使用を選択するディレクトリがあります。「デバッグ」モードである主な違いは、追加の .pdb ファイルを使用することです。

2.) http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-apps-windows-visual-studio.htmlは、VS2008 mysql 接続セットアップの非常に詳細な概要を提供します。特に [Project, Properties tree view, under C++, Preprocessor] の下に CPPCONN_PUBLIC_FUNC= と HAVE_INT8_T=1 の 2 つのステートメントを含める必要があります。

3.) ライブラリとの接続モードを明確にしてください。mysqlcppconn.lib は dll ベースですが、mysqlcppconn-static.lib は静的ベースです。dll ベースの lib の場合、関連する dll mysqlcppconn.dll を \windows\system32\ または他のシステム パスに配置してアクセスする必要があります。
静的接続の場合、extern C 接続を使用していることを覚えておいてください。そのため、...\mysql\connectorc c ___\ から libmysql.lib + libmysql.dll (「デバッグ」の下にある場合は libmysql.pdb) が必要になります。シンボル エラー LNK 2019 です。そのため、c++ インクルード ファイル ディレクトリを速やかに更新し、インクルード ファイル ディレクトリをリンクし、それに応じて追加の依存関係を作成し、.dll ファイルをシステム パスまたは ....\windows\system32\ に保存します。

4.) この時点で、一部の人にとってはうまくいくはずです。いいえ、それは私にはうまくいきませんでした。理由?dar7yl によって概説されているライブラリの比較可能性の問題。その場合は、コネクタのソース コードをhttp://dev.mysql.com/downloads/connector/cpp/からダウンロードします。プラットフォームを選択してソースコードを作成します。開梱すると、ここから少し複雑になります。VS ソリューションまたはプロジェクト ファイルがありませんか? 心配いりません。cmake__.txt ファイルを参照してください。それが私たちのソリューションです。cmake をダウンロードし、ソース ディレクトリと宛先ディレクトリが展開されたソース コード ディレクトリを指すようにします。次に、ディレクトリ内の cmake__.txt を開き、キーワード「boost」を検索し、boost ディレクトリを更新して、boost ディレクトリを指すようにします。configure を実行して VS 2010 に設定し、概説された構成を確認して、必要な名前/値テーブルを変更し、生成を押します。これで、プロジェクトとソリューション ファイルが生成されたはずです。これを開くと、多くのプロジェクトが表示されます。mysqlcppconn と mysqlcppconn-static のみに関心があります。インクルード ファイルを確認して更新し、2 つのプロジェクトのプロパティでファイル + 依存関係をリンクしてコンパイルします。

この時点で、mysql 接続が機能するようになりました。あなたにも機能することを願っています。上記にはいくつかの詳細が欠けている可能性があり、お詫び申し上げます。

于 2012-07-17T23:42:22.520 に答える
2

dddddd の素晴らしい投稿へのほんの少しの追加です。Windows7 でコンパイルしている場合、おそらく libmysql.lib ライブラリから「未解決の外部」がいくつか得られます。これは、libmysql.lib がサーバーの 64 ビット インストールからのものであることが原因であることがわかりました。32 ビット バージョンを見つけてリンクするか、代わりに 32 ビット サーバーをインストールする必要があります。

于 2013-04-26T02:20:29.030 に答える
1

ソースをダウンロードし、プロジェクトと同じ設定でコンパイルすることで、最終的に MySQL Connector/C++ を Visual Studio 2010 で動作させることができました。それはまだ SqlString ライブラリについて警告します:

j:\mysql-connector-c++-1.1.0\cppconn\sqlstring.h(36): warning C4251: 'sql::SQLString::realStr' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'sql::SQLString'

でも、それでいいみたいです。

于 2011-06-02T20:17:57.147 に答える