vs2015 搭建libpqxx 环境

最近工作上一个项目要求查询postgreSQL数据库中数据做处理显示,需要在Windows环境下使用,查了相关资料可以使用libpqxx的开源库来做数据库的登录,查询。

具体的数据库登录,查询等,在这里不需赘述,网络上有很多资料介绍,我也就不班门弄斧了,写一个认为不错的教程链接http://www.tutorialspoint.com/postgresql/postgresql_c_cpp.htm,希望对你有帮助。

下面就进入重点,libpqxx环境的搭建。(参考了其他博主的笔记http://www.cppblog.com/deajosha/archive/2015/11/07/211146.html)

1. 下载PostgreSql和libpgxx
    PostgreSql下载地址:http://www.postgresql.org/download/ 选择windows版本下的PostgreSql安装包(x86和x64)。
    libpgxx下载地址:https://github.com/dreamsxin/libpqxx (当然我是去这里下的http://pqxx.org/devprojects/libpqxx/doc/stable/html/Reference/)
    libpgxx官网资料地址:http://pqxx.org/devprojects/libpqxx/doc/4.0/html/Reference/
    libpgxx tutorial地址: http://pqxx.org/devprojects/libpqxx/doc/4.0/html/Tutorial/

2. 安装PostgreSql
   点击安装postgreSql安装包。如果要编译32位的libpgxx,请下载32位的PostgreSql安装程序,一键安装到即可。不过最新版的PostgreSql有个令人困扰的问题,那就是安装到最后是会弹出Stack Builder选择的问题,其实你如果没有特殊的需要完全可以选择取消在这里结束。当然你如果需要其他功能可以进入选择。我只是需要Windows下c++接口实现数据库连接和查询等简单功能于是在这里就结束了。

3. 编译libpgxx4.0.1
   3.1 解压libpqxx4.0.1压缩包,把win32\common-sample另存为win32\common,  使用ue编译器打开win32\common文件,
        修改PGSQLSRC的值为PostgreSql安装的根目录,如C:\Program Files (x86)\PostgreSQL\9.5。

        把LIBPQINC=$(PGSQLSRC)\interfaces\libpq注释掉,
        取消
           LIBPQINC=$(PGSQLSRC)\include的注释。

        把LIBPQPATH=$(PGSQLSRC)\interfaces\libpq\Release

           LIBPQDLL=libpq.dll
           LIBPQLIB=libpqdll.lib 注释掉,
       取消
           LIBPQDPATH=$(PGSQLSRC)\lib
           LIBPQDDLL=libpq.dll
           LIBPQDLIB=libpq.lib 注释。
        把LIBPQDPATH=$(PGSQLSRC)\interfaces\libpq\Debug
           LIBPQDDLL=libpqd.dll
           LIBPQDLIB=libpqddll.lib 注释掉,
        取消 
           LIBPQDPATH=$(PGSQLSRC)\lib
           LIBPQDDLL=libpq.dll
           LIBPQDLIB=libpq.lib 注释。

   3.2 将config\ample-headers\compile\VisualStudio2010\pqxx\目录下的所有头文件拷贝到include\pqxx目录下;
         将 config\sample-headers\libpq\9.0\pqxx\目录下的所有头文件拷贝到include\pqxx目录下。

   3.3 如果是编译64位的libpqxx, 请使用ue编译打开win32\vc-libpqxx.mak 文件,将
        LINK_FLAGS_BASE=kernel32.lib ws2_32.lib advapi32.lib /nologo /dll /machine:I386 shell32.lib secur32.lib wldap32.lib
        修改为
        LINK_FLAGS_BASE=kernel32.lib ws2_32.lib advapi32.lib /nologo /dll /machine:x64 shell32.lib secur32.lib wldap32.lib
   3.4 添加#include <algorithm>到src\largeobject.cxx文件的34行(否则在编译时会报错)。
   3.5 选择Visual Studio 2015下的Visual Studio Tools下的命令提示行工具(我使用的VS2015 开发人员命令提示,当然还可以使用X86,x64兼容工具命令提示符),并以管理员方式运行;
       运行命令:
       "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\nmake.exe" /f  win32/vc-libpqxx.mak ALL.

       编译成功后,会将编译输出的静态链接库的debug/release及动态链接库的debug/release文件放到lib目录下如:

细心的朋友可能发现我的目录里面多出了4个文件libeay32.dll,libiconv-2.dll,libintl-8.dll,ssleay32.dll。这几个文件在我使用libpqxx编写c++程序编译时提示的缺少动态库,这是在网上找的文件,放到这个目录就好了。

最后,还有一个问题,那就是在编写c++代码的时候需要配置visual的解决方案,具体的添加附加头文件,附加依赖什么的不在这里介绍了。需要提醒的是libpqxx最好选择static版本的。因为本博主一开始选择的非static版本的使用,编译可以通过,就是在运行的时候报异常,困扰了很久。据本人推测应该是非static版本的缺少某些系统依赖的动态库吧,也不再做深究,有兴趣的朋友可以使用depends.exe工具查找下。

posted @ 2016-06-14 18:13  xfsrain  阅读(2628)  评论(1编辑  收藏  举报