【问题标题】:Simple C++ program using pqxx (postgres)使用 pqxx (postgres) 的简单 C++ 程序
【发布时间】:2013-06-30 23:10:55
【问题描述】:

我正在使用 Code::Blocks 尝试一个非常基本的 C++ 程序。我在 Ubuntu 12.04 上并从软件管理器安装了 pqxx。这是代码。

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

using namespace std;
int main()
{

    pqxx::connection MyConn ("dbname=dbESM user=postgres");


    cout << "Hello world!" << endl;

    return 0;
}

但我在按 F9 编译和运行时收到以下错误:

/usr/include/pqxx/connection.hxx|87|未定义引用 `pqxx::connectionpolicy::connectionpolicy(std::basic_string, std::allocator > const&)'

上面的消息来自文件connection.hxx,突出显示的行是这样的:

  explicit connect_direct(const PGSTD::string &opts) : connectionpolicy(opts) {}

connection.hxx 文件不是我的 - 我认为它是 pqxx 的一部分。

我对这个平台很陌生,所以我避免使用终端来编译代码。任何帮助将不胜感激。

【问题讨论】:

  • FWIW 我一直看到报告表明 libpqxx 没有得到特别维护。我个人会使用常规的libpqlibpqtypes
  • @CraigRinger 感谢您的提示。我是这个平台的新手,我知道 pqxx 是默认使用的东西。此外,我认为 libpq 更倾向于旧的 C 风格代码。我不是这里的大师,但我只是分享我的想法。最后,我正在考虑使用 Code::Clocks 作为 IDE 构建 wxwidgets 应用程序。所以我在想,当涉及到表单上的网格之类的东西时,使用 libpq 是否会很方便。请指教。谢谢!
  • libpq 确实是一个纯 C 库。这意味着资源管理和错误处理需要做更多的工作,因为没有异常,没有 RAII,也没有自动 dtor。 OTOH,你可以使用libpqtypes,它可以让很多事情变得更容易。不确定它是否适用于libpqxx

标签: c++ postgresql database-connection codeblocks libpqxx


【解决方案1】:

您需要将libpqxx库的引用添加到项目中。

在 Code::blocks 中,当项目打开时,在菜单中找到 Project,然后跟随 Build options,然后打开名为 Linker settings 的选项卡,然后点击 Add,然后输入 pqxx

如果您改用libpq C 库,则过程将相同,只是名称为pq

【讨论】:

  • 如果这听起来很愚蠢,我很抱歉。但是我们为什么不指定 libpqxx 的路径呢?简单地把 libpqxx 工作。怎么样?
  • @itsols:因为它位于链接器默认显示的标准位置 (/usr/lib)
【解决方案2】:

您需要链接到相应的库,仅#include 头文件是不够的。如果可用,您可以使用 pkg-config 来确定相应的库。此外,您使用的是什么 IDE?没有它,“按 F9”参考是无用的。此外,在命令行上编译它可能更容易,因为它更清楚到底发生了什么。

【讨论】:

  • 感谢您的宝贵时间。我使用 Code::Blocks 作为 IDE。请通过链接相应的库来详细说明您的意思...我只是在关注 pqxx 网站上的文档。我认为 Code::Blocks 负责大多数链接......
  • 正如 Daniel 上面解释的那样,C::B 不会自动处理链接。在 Debian 上,libpqxx3-dev 带有 pkg​​-config 集成,因此可以通过pkg-config libpqxx --cflagspkg-config libpqxx --libs 检索预期的编译和链接设置。我会使用这些而不是硬编码的东西,因为即使你在本地安装不同的版本,它也会继续工作,然后你需要 /usr/local/.. 路径。如果它现在对你有用,很好,但请记住这一点,以备将来使用。祝你好运!
  • 感谢您的提示。我什至可能会考虑转向 debian :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多