zoukankan      html  css  js  c++  java
  • 搭建用于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环境搭建完毕。

  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/migiwa/p/12578286.html
Copyright © 2011-2022 走看看