搭建用于Visual Studio VC++的libpqxx环境

前言

libpqxx是用于开发PostgreSQL数据库的C++库,它对PostgreSQL的接口函数进行了封装,从而简化了开发流程。

本文涉及到的各组件版本如下:

  • Visual Studio:2015
  • PostgreSQL:10.12
  • libpqxx:6.4

准备工作

1. PostgreSQL的下载与安装

libpqxx的运行依赖于PostgreSQL的API,所以先要建立好PostgreSQL环境。PostgreSQL的下载与安装非本文内容,故略去。

2. libpqxx的下载

libpqxx现在已转移至GitHub发布,地址如下:

https://github.com/jtv/libpqxx

下载后解压缩至任一目录,例如笔者的为:C:Program Files (x86)libpqxx-6.4

libpqxx的编译

在Windows平台上使用libpqxx,需要先对下载的发行包进行编译。

1. 进入libpqxx根目录,把win32common-sample改名为win32common,用文本编辑器打开它,进行如下的修改。

修改字段PGSQLSRC的值为PostgreSql安装的根目录,笔者的为:C:Program Files (x86)PostgreSQL10,如下图:

注意路径的两端不要带引号,且字符之间不能有空格,否则会在编译过程中出现如下的错误:

The system cannot find the file specified.
NMAKE : fatal error U1077: 'copy' : return code '0x1'
Stop.

解决方法是如图那样采用短目录名。

接下来是库文件目录的修改,具体如下:

注释掉以下行:

LIBPQINC=$(PGSQLSRC)interfaceslibpq

取消以下行的注释:

LIBPQINC=$(PGSQLSRC)include

注释掉以下行:

LIBPQPATH=$(PGSQLSRC)interfaceslibpqRelease
LIBPQDLL=libpq.dll
LIBPQLIB=libpqdll.lib

取消以下行的注释:

LIBPQDPATH=$(PGSQLSRC)lib
LIBPQDDLL=libpq.dll
LIBPQDLIB=libpq.lib
注释掉以下行:
LIBPQDPATH=$(PGSQLSRC)interfaceslibpqDebug
LIBPQDDLL=libpqd.dll
LIBPQDLIB=libpqddll.lib

取消以下行的注释:

LIBPQDPATH=$(PGSQLSRC)lib
LIBPQDDLL=libpq.dll
LIBPQDLIB=libpq.lib

完成后如下图:

2. 将configsample-headerscompileVisualStudio2013pqxx目录下的所有头文件拷贝到includepqxx目录下。

3. 如果是编译64位的libpqxx,用文本编辑器打开win32vc-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

4. 在开始菜单选择Visual Studio 2015的开发人员命令提示工具,并以管理员方式运行。然后直接运行命令:vcvars32.bat

接着进入libpqxx的根目录,执行以下命令进行编译:

nmake /f win32/vc-libpqxx.mak ALL

编译成功后,会生成供VC++调用的静态库和动态库,包括Debug和Release两个版本,均位于以下目录中:

其中文件名带尾缀“D”的,是用于Debug版本的库文件,不带的是用于Release版本的库文件。

Visual Studio的配置

1. 在VS的工程属性配置对话框中展开“VC++目录”项。在“包含目录”子项添加libpqxx根目录下的include目录,在“库目录”子项添加libpqxx根目录下的lib目录。

除了使用上述的绝对路径以外,也可以通过环境变量进行设置,后者的方法较为灵活。方法是新建一环境变量“libpqxx”,变量值为libpqxx的根目录,如下图。然后就可以在上述的设置中用$(libpqxx)来表示这一路径了。

2. 在VS的工程属性配置对话框中配置“链接器->输入->附加依赖项”项,添加静态库,注意需针对Debug版本及Release版本分别添加。Debug版本添加的库为libpqxxD.lib和libpq.lib;Release版本添加的库为libpqxx.lib和libpq.lib。

3. 将以下dll文件拷贝至工程的编译输出目录,以供程序调用。

libpqxx根目录的lib文件夹下的:

  • libpq.dll
  • libpqxx.dll
  • libpqxxD.dll

PostgreSQL安装目录的bin文件夹下的:

  • libcrypto-1_1.dll
  • libiconv-2.dll
  • libintl-8.dll
  • libssl-1_1.dll

4. 在VC++工程的源文件中包含libpqxx的头文件

#include <pqxx/pqxx>

至此整个libpqxx环境搭建完毕。

原文地址:https://www.cnblogs.com/migiwa/p/12578286.html