1

C++ アプリケーションで深刻なメモリ リークを解決しようとしています。私はそれをMySQL接続の作成に絞り込みました.mysqlppドキュメント(および多くのグーグル)は、mysql_library_end()を呼び出してC APIにそれ自体をクリーンアップするように指示する必要があることを示しています。

この関数を使用しようとすると、Visual Studio は「mysql_library_end()」のリンク エラーをスローします。当然のことながら、どこを見ればいいのか教えてくれませんでした。

ヘッダー ファイル mysql.h をインクルードして再構築すると、Visual Studio は代わりに " mysql_server_end() " のリンク エラーをスローします。(ビルド環境で) mysql.h をチェックしましたが、使用したい関数 ( mysql_library_end() ) への唯一の参照は次のとおりです。

#define mysql_library_end mysql_server_end

ファイルには mysql_server_end() の関数宣言がありますが、Visual Studio はそれを認識できないようです。私はこのリンカー エラーで立ち往生しており、なぜそれが起こっているのかわかりません。

誰でも助けることができますか?

乾杯、アダム。

編集

Visual Studio 2005 を使用しています。IDE からのエラー メッセージは次のとおりです。

エラー 6 エラー LNK2019: 未解決の外部シンボル _mysql_server_end@0 が関数で参照されています "public: __thiscall CConnectionParams::~CConnectionParams(void)" (??1CConnectionParams@@QAE@XZ) CConnectionParams.obj

CConnectionParams は、mysql_library_end() への呼び出しの .cpp ファイルです。

4

1 に答える 1

1

解決策を見つけました。ヘッダー ファイルだけでは十分ではなく、ライブラリ全体をリンクする必要があります。MySQL C API とのインターフェイスに使用できるライブラリには、libmysql.lib と mysqlclient.lib の 2 つがあります。1 つは静的で、もう 1 つは動的です。私のために働いたのはlibmysql.libでした。したがって、結果として mysql.h を #include する必要はなかったことに注意してください。

このライブラリを Visual Studio にリンクするには、プロジェクトの依存関係の一部として含める必要があります。mysql インストールのディレクトリからソリューション ツリーにドラッグしましたが、これは VS でのみ機能し、他のビルド環境では機能しないため、あまり洗練された方法ではありません。

于 2012-11-20T00:42:07.843 に答える