c++ 17 在window上安装libpqxx 结合vs2022

发布时间 2023-06-30 01:59:09作者: 我当道士那儿些年

 

需求是按照libpqxx

版本:

c++ 17版本

libpqxx 7.7.5

postgresql是15版本

 

postgresql安装路径:C:\Program Files\PostgreSQL\15

1、设置环境变量

直接用powershell输入环境变量,然后关闭后在重新打开一个新的

setx PostgreSQL_LIBRARY "C:\path\to\libpq.lib"

setx PostgreSQL_INCLUDE_DIR "C:\path\to\include"

 

报错了,原因就是因为没有设置环境变量

PS C:\Usr\local\17_安装包\libpqxx-7.7.5\libpqxx-7.7.5> cmake -S C:/Usr/local/17_安装包/libpqxx-7.7.5/libpqxx-7.7.5 -B C:/Usr/local/17_安装包/libpqxx-7.7.5/libpqxx-7.7.5/build -G "Visual Studio 17 2022" -A x64
-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.19045.
-- The CXX compiler identification is MSVC 19.36.32532.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at C:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY
  PostgreSQL_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.26/Modules/FindPostgreSQL.cmake:272 (find_package_handle_standard_args)
  cmake/config.cmake:26 (find_package)
  CMakeLists.txt:27 (include)


-- Configuring incomplete, errors occurred!
View Code

 

2、cmake进行配置,记得创建build目录

模板

cmake -S /path/to/source -B /path/to/build -DCMAKE_INSTALL_PREFIX=/path/to/installation/folder -G "Visual Studio 17 2022" -A x64

/path/to/source 替换为你的源代码目录路径

/path/to/build 替换为你的构建目录路径

/path/to/installation/folder 替换为你希望安装文件的目标文件夹路径

-G "Visual Studio 16 2022" 指定生成 Visual Studio 2022 的解决方案和项目文件。

-A x64 指定生成 64 位的项目文件。

cmake -S C:/Usr/local/17_安装包/libpqxx-7.7.5/libpqxx-7.7.5 -B C:/Usr/local/17_安装包/libpqxx-7.7.5/libpqxx-7.7.5/build -D CMAKE_INSTALL_PREFIX=C:/Usr/local/cxx_17/libpqxx -G "Visual Studio 17 2022" -A x64

 3、Build 和Install

 4、复制生成的lib和include到项目下,然后配置

 

 

5、测试代码

#include <iostream>
#include <pqxx/pqxx>

int get_data_postgre() {
    try {
        // 连接信息
        std::string conninfo = "dbname=teacher user=postgres password=123123qwe hostaddr=127.0.0.1 port=5432";

        // 创建连接对象
        pqxx::connection conn(conninfo);

        // 检查连接状态
        if (conn.is_open()) {
            std::cout << "连接成功!" << std::endl;

            // 创建事务对象
            pqxx::work txn(conn);

            // 执行查询语句
            pqxx::result result = txn.exec("select \"PJYWT01\", \"PJYWT02\", \"PJYWT03\", \"PJYWT04\", \"PJYWT05\", \"PJYWT06\", \"PJYWT07\", \"PJYWT08\", \"PJYWT09\" from parent_pl_20230417;");

            // 遍历结果集
            for (const auto& row : result) {
                for (const auto& field : row) {
                    std::cout << field.c_str() << " ";
                }
                std::cout << std::endl;
            }

            // 提交事务
            txn.commit();
        }
        else {
            std::cout << "连接失败!" << std::endl;
        }
    }
    catch (const std::exception& e) {
        std::cerr << "发生异常: " << e.what() << std::endl;
    }

    return 0;
}