DBと接続するプログラムを書くときのコンパイルの設定をしてみましょう!


ここでは以下の環境を前提にします。

おそらく、他の環境でも予想しながらできるかと思います。



【環境】

データベース: postgres 8.1

OS: windows XP sp2

開発環境: Dev-C++、wxDev-C++


 VC++ Express 2008で接続したい場合、下の方の【補足】を参照ください。


【設定の準備】

まずは、プロジェクトを作成してください。

コンソールアプリケーションを選択してください。



【設定手順】

①Projectメニュー ⇒ Project Options を選択します。
pg_option1


②Additional Command-line Optionsタブを選択し、Linkerに「-lpq」を記入します。

 また、「libwsock32.a」を追加します。 

 たいていの場合、「C:/Program Files/Dev-Cpp/lib/libwsock32.a」にあります。
options


③Directoriesタブを選択し、PostgresSQLのライブラリがインストールされているディレクトリをAddする。

 たいてい、「C:\Program Files\PostgreSQL\8.1\lib」にあります。

※Postgresがインストールされていても、開発環境がインストールされていないときがあります。

 その場合、Postgresのインストーラを起動して開発環境をインストールしてください。
pg_option_dir



④Includeタブを選択し、PostgresSQLのインクルードがインストールされているディレクトリをAddする。

具体的には、以下の3つを追加します。(画像参照)
options_include


⑤OKボタンを押し、コンパイラの設定は完了する。

 次に、マイコンピュータのプロパティを開き、詳細設定タブを押し、「環境変数」ボタンを押す。

 Pathに、PostgresSQLの「bin」ディレクトリを追加する。

 たいていの場合、「C:\Program Files\PostgreSQL\8.1\bin;」


---------

ここまでで、設定は終了です。

次は、ためしにコンパイルしてみましょう。



サンプルは、Postgresのドキュメントに載っているソースにしてみます。

サンプルプログラム の一番最初「例28-1」のコードをコピーして、プロジェクトのmain.cppにペーストしてください。



【サンプルプログラムを使用しやすいように書き換え】

サンプルでは、エラーが起きるといきなりexitして、どんなエラーが起きたか分かりません。

デバッグをしやすくするため、「exit_nicely()」の関数を以下のように書き換えます。

static void
exit_nicely(PGconn *conn)
{
PQfinish(conn);

system("PAUSE");
exit(1);
}



また、DB接続の部分を以下のように書き換えます。(PQconnectdbがうまく動作しないので)

conn = PQsetdbLogin(NULL,
NULL,
NULL,
NULL,
"postgres", //dbname
"postgres", //login
"postgres"); //pwd postgresユーザのパスワードを書いてください。




最後に、main()の中の最後の行に以下のコードを追記します。


system("PAUSE");
return EXIT_SUCCESS;



【コンパイル!】

さて!やっと来ました。

コンパイルしてみましょう!



そして、実行しましょう。

実行の前に、Postgresのサービス起動を忘れないように!


うまく行かないときは、環境変数の変更が反映されていない可能性があります。

一度Dev-C++を終了して、再度立ち上げて実行しましょう。



どうです?できましたか?



【補足】

VC++の場合:

上記の手順を、以下のように変えます。

  ② ⇒ プロジェクトのプロパティ/リンカ/入力/追加の依存ファイルを開いて

    「libwsock32.a」の代わりに「wsock32.lib」を指定します。

    また、「-lpq」のオプションは必要ありません。

  

  ③ ⇒ こちら を参考にして、「libpq.dll」から「libpq.lib」を作成します。

    作成した「libpq.lib」はPostgresのlibフォルダの下にでもおきましょう。

    次に、プロジェクトのプロパティ/リンカ/入力/追加の依存ファイルを開いて

    作成したライブラリを追加します。

    追加するパスには空白が含まれると思うので、ダブルクォート(")で括りましょう。


  プロジェクトを作るときの注意点は、こちら です。



参考:

VC++でDLLの.libファイルを作成するには

VC++でのコンパイルについて

・PostgreSQLのデータを取得するには?

・C++ でMySQLと接続するには?

・DBの種類を気にせずにコードを書くには?

PostgreSQLの環境構築

lib.exeの概要