windows下编译和使用libpq

来源:互联网 发布:c语言小游戏 编辑:程序博客网 时间:2024/05/21 17:30

这些天,由于需要设计一个可以访问postgresql的数据库连接接口,而开发的环境又是在windows下面,所以必须要将libpq的源文件编译成为windows下面可以访问的lib库。
编译的时候,首先需要理解的概念是像VC IDE这样的集成开发环境,其实是调用了nmake这样的编译工具来编译工程项目文件,和linux下面的make其实是一样的。make在编译的时候调用了cl等编译工具,这个和make调用了cc等编译工具也是一样的,简单的来讲,就是这些编译方式在windows下面和在linux下面是完全一样的。
这次碰到的最大问题就是总是找不到nmake工具还有他调用的一些库,这些按理来讲,都是在VC IDE安装完成以后自动添加到windows的环境变量里面的,但是这次没有,所以我很是花了一些时间来弄这个。
以下是整个的编译过程介绍:

1、添加windows环境变量
在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
在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
在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、开始编译
nmake /f win32.mak就可以了

3、添加工程文件
注意一定要将postgresql目录下面的src/include以及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;
}