【发布时间】:2020-01-08 15:09:48
【问题描述】:
我目前正在升级使用 PostgreSQL 数据库的 C++ 应用程序。由于我们通常在基于 *nix 的系统上运行,因此我目前在 Windows 子系统 Linux (WSL) 中工作,尤其是在 Ubuntu 发行版中工作。 PostgreSQL 10 是通过 apt-get 安装的,并且在类 Unix 系统上的 following the directions to build libpqxx 之前升级了所有内容。
作为一个非常基本的测试,我有一个只包含参考的简单类:
#include <pqxx/pqxx>
但是,构建会导致(长)错误日志,以以下开头:
[ 15%] Building CXX object src/CMakeFiles/Core.dir/Reporters/DbReporter.cpp.o
In file included from /usr/local/include/pqxx/array.hxx:18:0,
from /usr/local/include/pqxx/array:4,
from /usr/local/include/pqxx/pqxx:2,
from /mnt/c/Users/User/git/Simulation/src/Reporters/DbReporter.cpp:3:
/usr/local/include/pqxx/internal/encodings.hxx:26:42: error: ‘pqxx::internal::encoding_group pqxx::internal::enc_group’ redeclared as different kind of symbol
encoding_group enc_group(std::string_view);
以下所有错误的性质与/pqxx/*. 下的文件生成错误的性质相似。通常对于无效声明、不属于 std 命名空间的函数(未在应用程序中重新定义),或出现语法错误。
我怀疑libpqxx 库的构建方式不匹配。如何隔离和纠正问题?
【问题讨论】:
-
"...在按照指示在类 Unix 系统上构建
libpqxx之前,所有内容都已升级。" - 你已经建立并安装了libpqxx,不是吗?我怀疑,因为那时你告诉编译一个使用该库的示例,如果没有安装库,这是不可能的。但否则你的问题并没有声称你已经安装了libpqxx。你能否在这方面把问题发布得更清楚一点?而且,关于标题,您有 compiler 错误,而不是 linking 错误。 -
@Tsyvarev 标题已更新;但是,我不确定我是否遵循您的其余评论。GitHub 上
libpqxx的指示已正确执行,因此现在应该将其安装在系统上。但是,此应用程序是第一个使用该库的应用程序,所以在我们的构建环境中,我没有任何其他项目可以与它进行比较。 -
我可能会错误地理解短语“......在遵循在类 Unix 系统上构建 libpqxx 的说明之前,一切都已升级。”,但对我来说,这意味着您准备好构建库的一切。 .,但不要构建它(还)。但是,如果您认为这意味着您实际上已经构建并安装了该库,那么就是这样。同样,我不要求有关安装库的其他信息。这只是一个确认请求,无论您是否安装了它。
-
@Tsyvarev 是的,库的构建和安装都很好......但是问题最终被隐藏在 CMakes 文件中,并且一旦确定就非常简单。
标签: c++ ubuntu cmake windows-subsystem-for-linux libpqxx