Muponder

为者常成,行者常至。

C++博客 首页 新随笔 联系 聚合 管理
  1 Posts :: 7 Stories :: 7 Comments :: 0 Trackbacks
1. 下载PostgreSql和libpgxx
    PostgreSql下载地址:http://www.postgresql.org/download/ 选择windows版本下的PostgreSql安装包(x86和x64)。
    libpgxx下载地址:https://github.com/dreamsxin/libpqxx
    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安装包,如: PDK-9.4.0.298593-windows-64.exe。如果要编译32位的libpgxx,请下载32位的PostgreSql安装程序,
   如postgresql-9.3.9-1-windows.exe,一键安装到即可。

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

        把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 选择Visual Studio 2013下的Visual Studio Tools下的命令提示行工具,并以管理员方式运行;
       编译x86库时,直接运行命令:vcvars32.bat,
       编译x64库时,请运行命令:
       ”C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat"。

       定位到libpgxx根目录下,如xx\libpqxx-4.0.1\libpqxx-4.0.1\,
       编译x86库时,运行命令:nmake /f win32/vc-libpqxx.mak ALL;
       编译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目录下如:
 
3.5 更多的编译选项及编译说明,请参照win32目录下的common文件,INSTALL.TXT 及vc-libpgxx.mak。本文如有说明得不对的,望指正。

     
posted on 2015-07-04 23:03 盛源博 阅读(2073) 评论(7)  编辑 收藏 引用 所属分类: 【OpenSource】

Feedback

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1[未登录] 2015-09-30 02:38 Larry
非常感谢能有您这篇文章,我正在使用 Visual Studio 2015 在 windows 10 上上编译 64 位的 libpqxx, 搜到了您的文章,按照您的步骤操作,遇到了问题,能否请帮忙看一下,

现在执行编译后,会出现如下错误:

C:\Users\Larry\Downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\nmake.exe" /f win32/vc-libpqxx.mak ALL

Microsoft (R) 程序维护实用工具 14.00.23026.0 版
版权所有 (C) Microsoft Corporation。 保留所有权利。

cl.exe /nologo /W3 /EHsc /FD /GR /c /I "include" /I C:\Users\Larry\PostgreSQL\9.4\include /I C:\Users\Larry\PostgreSQL\9.4\include /D PGSTD="std" /D "WIN32" /D "_MBCS" /D "_WINDOWS" /D "PQXX_INTERNAL" /MDd /Gm /ZI /Od /D "_LIB" /D "_DEBUG" /RTC1 /Fo"ObjStaticDebug\\" /Fd"ObjStaticDebug\\" src/largeobject.cxx
cl: 命令行 warning D9028 :最小重新生成失败,正在转换为标准生成
largeobject.cxx
c:\users\larry\downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1\src\largeobject.cxx(225): error C2039: “max”: 不是“std”的成员
c:\users\larry\downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1\include\pqxx\util.hxx(270): note: 参见“std”的声明
c:\users\larry\downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1\src\largeobject.cxx(225): error C3861: “max”: 找不到标识符
c:\users\larry\downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1\src\largeobject.cxx(234): error C2039: “max”: 不是“std”的成员
c:\users\larry\downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1\include\pqxx\util.hxx(270): note: 参见“std”的声明
c:\users\larry\downloads\libpqxx-4.0.1.tar\libpqxx-4.0.1\src\largeobject.cxx(234): error C3861: “max”: 找不到标识符
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe"”: 返回代码“0x2”
Stop.
  回复  更多评论
  

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1 2015-11-07 15:15 盛源博
@Larry
这个问题应该是你引用的头文件路径有问题吧   回复  更多评论
  

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1 2016-02-05 12:13 kiddream
@盛源博
这个问题解决了吗  回复  更多评论
  

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1 2016-02-05 12:15 kiddream
解决的话帮下忙 这个怎么解决的 谢谢了  回复  更多评论
  

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1 2016-02-23 16:41 cclee
@kiddream
Adding #include <algorithm> on line 34 of largeobject.cxx is exactly what I needed.

http://pqxx.org/boilerplate/frozen/279.html  回复  更多评论
  

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1 2016-03-14 21:36 geminium
您好!我的系统是win10 64位,使用windows community 2013,libpqxx4.0.1。我通过您的方式想编译64位的dll,但是窗口提示fatal error LNK1112:module machine type "X86" conflicts with target machine type "x64"。请教一下,会是什么原因造成的?  回复  更多评论
  

# re: Windows 8.1 Visual studio 2013编译libpqxx4.0.1 2016-03-15 09:33 deajosha
@geminium
你的编译器编译平台类型与代码中设置的平台类型不一致导致的  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理