namespace pqxx not recognized - 将 libpqxx 添加到 C++ Visual Studio Windows 上的 PostgreSQL 项目时出现问题

namespace pqxx not recognized - Issues adding libpqxx to C++ Visual Studio PostgreSQL project on Windows

问题

我正在尝试使用 lipqxx 与 PostgreSQL 数据库进行交互。然而,尽管 #include-ing pqxx,它的命名空间似乎没有被识别,因此没有 pqxx 函数被识别。 (带有问题注释的简化代码:)

#include <iostream>
#include <pqxx/pqxx> // no errors indicated in Visual Studio (VS) here. 

void Classname::operator() (){ // functor method implementation
    using namespace std;
    using namespace pqxx; // **red underline in Visual Studio indicating "name must be a namespace"**
    try{
        connection C("String text"); // **red underline in VS: "identifier 'connection' is undefined"**
    }catch(const std::exception &e) {
        cerr << e.what() << std::endl;
    }
}

我做了什么

  1. 已下载 CMake(用于 Windows)和 libpqxx。
  2. 按照(本视频:https://www.youtube.com/watch?v=LxHV-KNEG3k)中的说明使用 CMake 构建 lipqxx。这产生了一个名为 "libpqxx" 的文件夹,其中包含 "bin"、"include"、"lib" 和 "share" 子文件夹。
  3. 按照说明(在此线程上:How to add additional libraries to Visual Studio project?)将构建的库添加到我的 VS 项目

结论

我希望 pqxx 名称空间能够被正确识别,但我不确定从这里到哪里去。我已经坚持了很长一段时间,非常感谢关于如何解决这个问题的一些明确的指导步骤。

非常感谢

我终于找到了解决这个问题的方法,方法是使用

项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录 -> 编辑下拉选项) -> 换行 (图标) -> 浏览并select "include " 文件夹 -> 确定

#include 错误消失了,但我在尝试编译我的程序后收到以下错误(下面的片段):

1>D:\Software\libpqxx\libpqxx\include\pqxx\internal\encoding_group.hxx(14,1): error C2429: language feature 'nested-namespace-definition' requires compiler flag '/std:c++17'

我通过将项目的 Visual Studio C++ 语言 属性 设置为 C++ 17 解决了这些问题:

项目 -> 属性 -> C/C++ -> 语言 -> C++ 语言标准 -> (select 下拉选项) ISO C++ 17 标准 (/std:c++17)


编辑:(迄今为止最干净的解决方案)

最干净的解决方案是使用 Microsoft 的 vcpkg 软件包安装程序,因为它 非常简单地 将 libpqxx 添加到 Visual Studio 本身,而不是单个项目每个项目的基础。

link 上的说明所述:

  1. 通过 运行 在 cmd 中从名为 C:\src 的文件夹中执行以下命令安装 vcpkg(以避免出现问题。必要时创建文件夹):

git clone https://github.com/microsoft/vcpkg

.\vcpkg\bootstrap-vcpkg.bat

  1. 通过在同一文件夹中输入 cmd 来安装 libpqxx

.\vcpkg\vcpkg install libpqxx:x64-windows

.\vcpkg\vcpkg integrate install

.\vcpkg\vcpkg install libpqxx

  1. 全部完成!

我在 运行 之后遇到了同样的问题:

vcpkg install libqpxx:x64-windows

运行(作为管理员)

vcpkg integrate install

为我解决了问题