Windows環境下編譯產生libpq
編譯的時候,首先需要理解的是像VC IDE這樣的整合式開發環境,其實是調用了nmake這樣的編譯工具來編譯工程專案檔,和linux下面的make其實是一樣的。make在編譯的時候調用了cl等編譯工具,這個和make調用了cc等編譯工具也是一樣的,簡單的來講,就是這些編譯方式在windows下面和在linux下面是完全一樣的。
這次碰到的最大問題就是總是找不到nmake工具還有他調用的一些庫,這些按理來講,都是在VC IDE安裝完成以後自動添加到windows的環境變數裡面的,但是這次沒有,所以我很是花了一些時間來弄這個。
以下是整個的編譯過程介紹:
1、添加windows環境變數
a) 在include變數裡面補充了:
D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include
b) 在lib變數裡面補充了:
D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Lib\;D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
c) 在path變數裡面補充了:
D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
當然最簡單的方法就是調用D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat這個bat檔案,用來設定環境變數。
2、開始編譯
cd進入{PGHOME}\src目錄,執行nmake /f win32.mak命令後,在{PGHOME}\src\interfaces\libpq\Release目錄裡產生libpq.lib和libpq.dll。
PS: {PGHOME}為PostgreSQL所在位置。
3、添加工程檔案
注意一定要將postgresql目錄下面的{PGHOME}\src\include以及{PGHOME}\interfaces\libpq這兩個目錄作為include目錄加到項目裡面,
否則是編譯通過不了的。
4、一個簡單的例子
#include "stdafx.h"
#include "language.h"
#include "libpq/libpq-fe.h"
void verifyCCon()
{
const char *conninfo;
PGconn *conn;
PGresult *res;
PGnotify *notify;
int nnotifies;
conninfo = "host=localhost hostaddr=127.0.0.1 port=5432 dbname=FlowRecord user=postgres password=netflow";
/* 和資料庫建立連結 */
conn = PQconnectdb(conninfo);
/*
* 檢查一下與伺服器的串連是否成功建立
*/
if (PQstatus(conn) != CONNECTION_OK)
{
std::cout<<"Connection to database failed:"<<PQerrorMessage(conn);
}
else
{
std::cout<<"Connection to database success!"<<endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
language l("forest");
cout<<l.getLan()<<endl;
cnLan cnL("forest");
cout<<cnL.getName()<<endl;
verifyCCon();
return 0;
}