命名空间 pqxx 无法识别 - 将 libpqxx 添加到 Windows 上的 Visual Studio Post
namespace pqxx not recognized - Issues adding libpqxx to C++ Visual Studio PostgreSQL project on Windows
问题
我正在尝试使用 lipqxx 与 PostgreSQL 数据库进行交互。但是,尽管 #include 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;
}
}
我做了什么
- 下载了CMake(适用于Windows(和libpqxx。
- 按照(此视频:https://www.youtube.com/watch?v=LxHV-KNEG3k(中的说明使用 CMake 构建 lipqxx。这产生了一个名为"libpqxx"的文件夹,其中包含"bin","include","lib"和"share"子文件夹。
- 按照说明(在此线程上:如何将其他库添加到Visual Studio项目?(将构建的库添加到我的VS项目中
结论
我希望正确识别 pqxx 命名空间,但不确定从这里开始。我已经坚持了一段时间,非常感谢一些关于如何解决这个问题的明确指导步骤。
非常感谢
运行后我遇到了同样的问题:
vcpkg install libqpxx:x64-windows
正在运行(以管理员身份(
vcpkg integrate install
为我解决了问题
我终于找到了解决方案,方法是将名为"include"的文件夹(位于CMake进程生成的"libpqxx"目录中(添加到Visual Studio项目中,使用以下命令
项目->属性->C/C++->常规->其他包含目录->编辑(下拉选项( ->换行符(图标( ->浏览并选择"包含"文件夹->确定
#include 错误消失了,但在尝试编译程序后,我收到了以下错误(下面的代码片段(:
1>D:\Software\libpqxx\libpqxx\include\pqxx\internal\encoding_group.hxx(14,1(:错误 C2429:语言功能"嵌套命名空间定义"需要编译器标志"/std:c++17">
我通过以下方式将项目的 Visual Studio C++ Language 属性设置为 C++ 17 来解决这些问题:
项目 -> 属性 -> C/C++ -> 语言 -> C++语言标准 ->(选择下拉选项(ISO C++ 17 标准 (/std:c++17(
>编辑:(迄今为止最干净的解决方案(最干净的解决方案是使用Microsoft的vcpkg包安装程序,因为它非常简单地将libpqxx添加到Visual Studio本身,而不是基于每个项目的单个项目。
正如链接上的说明所解释的那样:
- 通过在名为 C:\src 的文件夹中运行以下命令来安装 vcpkg(以避免出现问题。如有必要,请创建文件夹(:
git clone https://github.com/microsoft/vcpkg
.vcpkgbootstrap-vcpkg.bat
- 通过输入同一文件夹中的cmd来安装libpqxx:
.vcpkgvcpkg install libpqxx:x64-windows
.vcpkgvcpkg integrate install
.vcpkgvcpkg install libpqxx
- 全部完成!
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- CMake 在 Windows 上的自定义位置上找不到 Boost
- 命名空间 pqxx 无法识别 - 将 libpqxx 添加到 Windows 上的 Visual Studio Post
- 在 Julia 中使用 boost 库和 Windows 上的 Cxx.jl
- 如何链接 DLL 以供 LoadLibrary() 使用(在 Windows 上的 C++ 中)并从调用 exe 导入变
- 清理"QSettings"注册表项的最佳方法(Windows上的Qt 5)
- g++ 9.2.1 (Linux) 会导致 seg 错误,但 Windows 上的代码块不会
- "C.UTF-8" C++ Windows 上的语言环境?
- 0xc000007b Windows 上的 OpenCL 库的加载时间错误
- 使用 MinGW 在 Windows 上的命令行编译C++文件
- 来自 VS C++ 在 Windows 上的非法指令
- Firebase C++ Windows 上的实时数据库连接丢失
- Windows上的Flite API错误
- Windows上的libtool需要绝对路径,而我已经给了它绝对路径
- 如何在 Windows 上的 C++ 中根据文件的修改时间读取目录中的文件
- 在 Windows 上的C++中使用选择功能进行轮询
- C++ u8 文字 - Windows 上的意外编码
- Windows 上的进程资源限制
- clang-tidy 忽略 Windows 上的可读性标识符命名