Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


23.8.4.1 C API クライアントプログラムの構築

このセクションでは、MySQL C API を使用する C プログラムのコンパイルのガイドラインを提供します。

Unix での MySQL クライアントのコンパイル

MySQL ヘッダーファイルを使用するクライアントプログラムのコンパイル時に、コンパイラがそれらを見つけることができるように、-I オプションを指定する必要がある場合があります。たとえば、ヘッダーファイルが /usr/local/mysql/include にインストールされている場合、コンパイルコマンドでこのオプションを使用します。

-I/usr/local/mysql/include

リンクコマンドで、-lmysqlclient オプションを使用して、MySQL クライアントをリンクする必要があります。リンカーにライブラリを見つける場所を伝えるために、-Lオプションを指定する必要がある場合もあります。たとえば、ライブラリが /usr/local/mysql/lib にインストールされている場合、リンクコマンドでこれらのオプションを使用します。

-L/usr/local/mysql/lib -lmysqlclient

パス名は、使用しているシステムで異なることがあります。必要に応じて、-I オプションと -L オプションを調整してください。

Unix で MySQL プログラムのコンパイルを簡単にするには、mysql_config スクリプトを使用します。セクション4.7.2「mysql_config — クライアントのコンパイル用オプションの表示」を参照してください。

mysql_config は、コンパイルやリンクに必要なオプションを表示します。

shell> mysql_config --cflags
shell> mysql_config --libs

それらのコマンドを実行して、正しいオプションを取得し、それらを手動でコンパイルまたはリンクコマンドに追加できます。または、mysql_config からの出力を逆引用符を使用して、コマンド行に直接含めます。

shell> gcc -c `mysql_config --cflags` progname.c
shell> gcc -o progname progname.o `mysql_config --libs`
Microsoft Windows での MySQL クライアントのコンパイル

ヘッダーおよびライブラリファイルの場所を指定するには、開発環境によって提供されている機能を使用します。

Windows で C API クライアントを構築するには、C クライアントライブラリのほか、Windows ws2_32 ソケットライブラリおよび Secur32 セキュリティライブラリにリンクする必要があります。

Windows では、コードを動的または静的 C クライアントライブラリとリンクできます。静的ライブラリは mysqlclient.lib という名前で、動的ライブラリは libmysql.dll という名前です。さらに、動的ライブラリを使用するために libmysql.lib 静的インポートライブラリが必要です。

静的ライブラリとリンクする場合、これらの状況が満たされていないと、障害が発生する可能性があります。

  • クライアントアプリケーションは、ライブラリをコンパイルするために使用される Visual Studio の同じバージョンでコンパイルする必要があります。

  • クライアントアプリケーションは /MT コンパイラオプションを使用して、C ランタイムを静的にリンクしてください。

クライアントアプリケーションがデバッグモードで構築され、静的デバッグ C ランタイムを使用する (/MTd コンパイラオプション) 場合、mysqlclient.lib 静的ライブラリが同じオプションを使用して構築されている場合に、それにリンクできます。クライアントアプリケーションが動的 C ランタイムを使用する (/MD オプション、またはデバッグモードでの /MDd オプション) 場合、それを libmysql.dll 動的ライブラリにリンクする必要があります。それは静的クライアントライブラリにリンクできません。

リンクオプションについて説明する MSDN ページは、http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx にあります。

MySQL クライアントライブラリへのリンクの問題のトラブルシューティング

MySQL 5.6 では、MySQL クライアントライブラリに SSL サポートが組み込まれて含まれています。アプリケーションで、リンク時に OpenSSL ライブラリからの -lssl または -lcrypto が必要な場合、-lmysqlclient の前にそれらを指定する必要があります。

リンカーが MySQL クライアントライブラリを見つけられない場合、ここに示すような、mysql_ から始まるシンボルの未定義参照エラーを受け取ることがあります。

/tmp/ccFKsdPa.o: In function `main':
/tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init'
/tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect'
/tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error'
/tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'

この問題は、リンクコマンドの末尾に -Ldir_path -lmysqlclient を追加して解決できます。ここで dir_path はクライアントライブラリが存在するディレクトリのパス名を表します。正しいディレクトリを判断するには、このコマンドを試してみます。

shell> mysql_config --libs

mysql_config からの出力に、リンクコマンドに同様に指定すべきほかのライブラリが示されることがあります。コンパイルまたはリンクコマンド内に、逆引用符を使用して、mysql_config 出力を直接含めることができます。例:

shell> gcc -o progname progname.o `mysql_config --libs`

リンク時に floor シンボルが未定義であるというエラーが発生した場合、コンパイル/リンク行の末尾に -lm を追加して、数学ライブラリにリンクします。同様に、connect() などのシステムに存在しているべきほかの関数の未定義参照エラーを受け取った場合は、問題の関数のマニュアルページをチェックして、リンクコマンドに追加すべきライブラリを判断します。

システムに存在しない関数の次のような未定義参照エラーを受け取った場合、それは通常 MySQL クライアントライブラリが、使用しているシステムと 100% の互換性がないシステムでコンパイルされたことを意味します。

mf_format.o(.text+0x201): undefined reference to `__lxstat'

この場合は、最新の MySQL または MySQL Connector/C ソース配布をダウンロードし、自分で MySQL クライアントライブラリをコンパイルしてください。セクション2.9「ソースから MySQL をインストールする」およびMySQL Connector/C Developer Guideを参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.