[转]Windows环境下编译生成libpq
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;
}