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环境搭建完毕。

  • 相关阅读:
    smarty通过asssign传入的值不能在模板显示值
    如何选择合适的MySQL存储引擎
    列表 li 中的文字无法垂直居中
    php 中在 CCS文件中设置背景图片无效:
    完美实现个人建站梦想 全面了解IIS组建方法
    颂孔明
    <青春飞扬>诗集出版的历史价值
    市场部常用名词(培训资料整理)
    爱的脚步
    一位闯荡江湖多年的商人的感悟
  • 原文地址:https://www.cnblogs.com/migiwa/p/12578286.html
Copyright © 2011-2022 走看看