编译步骤(x86版本)
1.下载并安装postgresql,点击进入下载地址。下载界面如下:
目前最新版本是9.5.1,我下载了 Win x86-32 的最新版本。安装后目录如下:
2.下载并解压缩libpqxx,点击进入下载地址。下载界面如下:
目前最新版本是4.0.1,我下载了libpqxx-4.0.1.tar.gz
压缩包。解压后目录如下:
3.编译环境准备。(安装或解压路径请以实际的为准,本文路径仅供参考)
- 进入libpqxx的解压路径 D:\Program Files (x86)\libpqxx-4.0.1\win32 ,将该路径下的common-sample文件另存为common文件
- 打开并删除上述common文件原有全部内容,然后将以下代码复制到common文件中并保存。
*注意:复制后请将第53行
PGSQLSRC 的值修改为你实际安装postgresql的根目录,同时根目录两端的双引号不能省略!
# Common options for Visual C++ makefiles to build libpqxx and its regression # test. # THE ORIGINAL OF THIS FILE IS CALLED common-sample; DON'T EDIT THE ORIGINAL or # you may lose your changes when you upgrade your libpqxx sources. # Instead, copy "common-sample" to "common" and edit just the file "common". # Caution: on Windows, some environments, such as the "make" that comes with # Visual C++, expect you to use backslashes as path separators (for example, # "C:\src\libpqxx") whereas others like MinGW want you to use more conventional # slashes (as in "C:/src/libpqxx"). # Standard library namespace. # There are only two reasons why you might want to change this: # # 1. Your compiler doesn't define the standard library in the "std" namespace # but in the global namespace, in which case PGSTD should be the empty string. # However, a compiler with that problem is not likely to be good enough to # compile libpqxx. # # 2. You are using a third-party standard library implementation such as # STLport, which lives in another namespace to avoid clashes with the # implementation that came with the compiler. # # In the latter case, PGSTD must be set to the namespace used by your preferred # implementation. In all other cases, just leave this set to "std". STD="std" # If you are using a 3rd-party STL like STLport, remember to check your path # and be sure the STLport is included before the MSVC includes. VCVARS32.BAT # doesn't know anything about the directories as defined in the IDE. I use # # set INCLUDE=\Utility\Code\STLport-4.5\stlport;%INCLUDE% # # ...and set STD to "_STL". # Depending on your STL library min/max need to be defined. Using STLport # there is no need for libpqxx to redefine these for me. # The next line gives us the directory under which all PostgreSQL include # directories, DLLs and LIB files can be found. # # If you built PostgreSQL from source, this is probably the only line you # will need to change. # # If you installed PostgreSQL using the One Click Installer from EnterpriseDB, # comment out the following line and uncomment the line after it. # # Edit the appropriate line to match your specific installation. #PGSQLSRC="C:\Sources\postgresql-9.1.1\src" PGSQLSRC="D:\Program Files (x86)\PostgreSQL\9.5" # This is the directory where the Postgres header files, e.g. postgres_ext.h, # are found. PGSQLINC=$(PGSQLSRC)\include # This is the directory where the libpq header files, e.g. libpq-fe.h, # are found. If you used the One Click Installer, comment out the next line # and uncomment the one following it: #LIBPQINC=$(PGSQLSRC)\interfaces\libpq LIBPQINC=$(PGSQLSRC)\include # This is the directory where the release build of the libpq DLL # and its corresponding LIB file are found, as well as the names of # those two files. # # If you installed PostgreSQL using the One Click Installer from EnterpriseDB, # comment out the next three lines and uncomment the following three: #LIBPQPATH=$(PGSQLSRC)\interfaces\libpq\Release #LIBPQDLL=libpq.dll #LIBPQLIB=libpqdll.lib LIBPQPATH=$(PGSQLSRC)\lib LIBPQDLL=libpq.dll LIBPQLIB=libpq.lib # This is the directory where the debug build of the libpq DLL # and its corresponding LIB file are found, as well as the names of # those two files. # # NOTE: If you don't have access to a debug build of libpq, just # provide the same information as above here. The debug builds of # libpqxx will reference the release version of libpq, which will # only limit your ability to debug libpq sources but otherwise should # work just fine. # # If you installed PostgreSQL using the One Click Installer from EnterpriseDB, # comment out the next three lines and uncomment the following three. #LIBPQDPATH=$(PGSQLSRC)\interfaces\libpq\Debug #LIBPQDDLL=libpqd.dll #LIBPQDLIB=libpqddll.lib LIBPQDPATH=$(PGSQLSRC)\lib LIBPQDDLL=libpq.dll LIBPQDLIB=libpq.lib
- 进入libpqxx的解压路径 D:\Program Files (x86)\libpqxx-4.0.1\config\sample-headers\compiler\VisualStudio2010\pqxx ,将该路径下的全部头文件拷贝到目录 D:\Program
Files (x86)\libpqxx-4.0.1\include\pqxx中
- 进入libpqxx的解压路径 D:\Program Files (x86)\libpqxx-4.0.1\config\sample-headers\libpq\9.0\pqxx ,将该路径下的全部头文件拷贝到目录
D:\Program Files (x86)\libpqxx-4.0.1\include\pqxx中
- 进入libpqxx的解压路径 D:\Program Files (x86)\libpqxx-4.0.1\src ,打开 largeobject.cxx 源文件,在第34行加入头文件#include <algorithm>
4.开始编译。(安装或解压路径请以实际的为准,本文路径仅供参考)
- 在开始菜单选择Visual Studio 2013的开发人员命令提示工具,并以管理员方式运行,然后直接运行命令:vcvars32.bat
- 将命令提示工具定位到 libpqxx 的解压路径: D:\Program Files (x86)\libpqxx-4.0.1
- 最后在命令提示工具中直接运行命令:nmake /f win32/vc-libpqxx.mak ALL,即可开始编译。
- 编译成功后,所生成的静态库以及动态库,包括DEBUG版本和RELEASE版本,全部都在如下目录中:
常见编译错误
- 提示缺少头文件。
请查看common文件中的 PGSQLSRC 的值是否已经修改为你实际安装postgresql的根目录,并确保已经按照上述步骤拷贝全部所需头文件。
- 提示类似错误:error U1077: ‘copy‘ : return code ‘0x1‘。
请查看common文件中的 PGSQLSRC 的值是否已经修改为你实际安装postgresql的根目录,并确保根目录两端的双引号存在。
- 提示类似错误: min() 或者 max() 不是std 的标准函数。
请确保 largeobject.cxx 源文件第34行已经加入头文件 #include <algorithm>。
- 提示一堆无法解析的外部函数。
如果编译的是 x86 版本的 libpqxx ,请确保安装的 postgresql 也是 x86 版本的;同样 x64 版本的也是一个道理。
关于 libpgxx 更多的编译选项及编译说明,请参照 libpqxx 解压路径 Win32 目录下的common,INSTALL.TXT 以及 vc-libpgxx.mak 等文件。
时间: 2024-08-24 09:32:09