【问题标题】:Build with libpqxx in C++11 on Kdevelop在 Kdevelop 上使用 C++11 中的 libpqxx 构建
【发布时间】:2015-06-01 14:39:23
【问题描述】:

我正在尝试构建一个需要 lipqxx 功能的 C++ 程序。我在 Ubuntu 上,正在尝试使用 Kdevelop。

我使用 Code::Blocks 成功地做到了,但我正在努力寻找更好的 IDE。

现在,我用 Kdevelop 做了什么。 我创建了一个简单的例子:

#include <pqxx/pqxx>

int main(int argc, char **argv) {
    pqxx::connection c("dbname=xx host=localhost user=xx password=xx");
    return 0;
}

我修改了 CmakeList.txt 以包含 pqxx 目录并与 libpqxx.so 链接:

cmake_minimum_required(VERSION 2.6)
project(testkdev)

include_directories ("/usr/include/pqxx")

LINK_DIRECTORIES("/usr/lib")

add_executable(testkdev main.cpp)
TARGET_LINK_LIBRARIES(testkdev libpqxx.so)

install(TARGETS testkdev RUNTIME DESTINATION bin)

此时,构建过程工作

但我需要做些别的事情,我想在 C++11 中工作。 所以我添加了一个 -std=c++11 选项,右键单击我的项目,打开配置 > Cmake > 高级值 > CMAKE_CXX_FLAGS。

我收到以下错误:

/home/francis/projects/testKDEV/build> make -j2
[100%] Building CXX object CMakeFiles/testkdev.dir/main.cpp.o
In file included from /usr/include/c++/4.9/memory:79:0,
                 from /usr/include/c++/4.9/tr1/memory:39,
                 from /usr/include/pqxx/util.hxx:31,
                 from /usr/include/pqxx/util:18,
                 from /usr/include/pqxx/except.hxx:27,
                 from /usr/include/pqxx/except:19,
                 from /usr/include/pqxx/result.hxx:33,
                 from /usr/include/pqxx/result:19,
                 from /usr/include/pqxx/binarystring.hxx:26,
                 from /usr/include/pqxx/binarystring:18,
                 from /usr/include/pqxx/pqxx:17,
                 from /home/francis/projects/testKDEV/main.cpp:2:
/usr/include/c++/4.9/functional:1034:20: error: expected template-name before ‘<’ token
     : tuple_element<__i, _Tuple> { };
                    ^
/usr/include/c++/4.9/functional:1034:20: error: expected ‘{’ before ‘<’ token
/usr/include/c++/4.9/functional:1034:20: error: expected unqualified-id before ‘<’ token
/usr/include/c++/4.9/functional:1054:17: error: ‘tuple_size’ was not declared in this scope
          (__i < tuple_size<_Tuple>::value)>
                 ^
/usr/include/c++/4.9/functional:1054:35: error: ‘::value’ has not been declared
          (__i < tuple_size<_Tuple>::value)>

它继续错误... 谁能帮我理解我做错了什么?

【问题讨论】:

    标签: c++11 libpqxx


    【解决方案1】:

    我不知道 Kdevelop,但我遇到了类似的问题。我使用 Eclipse。有我的问题和答案。那是波兰语,所以找一个可以翻译的人。我的英语不太好,但我会尽可能地翻译。

    My question (forum.dobreprogramy.pl)

    您需要 libpqxx-4.0.1。下载这些包:

    下一步:

    1. 检查包:md5sum -c libpqxx-4.0.1.tar.gz.md5sum
    2. 如果没问题:tar -xzvf libpqxx-4.0.1.tar.gz
    3. cd libpqxx-4.0.1
    4. ./configure --prefix=/usr/local --enable-shared

    您可以选择“/usr/local”以外的路径。里面会安装libpqxx。

    1. 清理干净
    2. 制作
    3. 进行安装

    现在你应该在 /usr/local/include 和 libpqxx.a 中有头文件,在 /usr/local/lib 中有 libpqxx.so。如果一切正常,请在 IDE 中链接库。我不知道如何在您的 IDE 中执行此操作,但这通常是相同的,但属性位于不同的位置。例如在 Eclipse CDT 中:

    1. 在 Project/properties/C\C++ Buid/Settings/GCC C++ Compiler/Includes/include 路径类型:/usr/local/include
    2. 在 GCC C++ 链接器/库/库中搜索路径类型:/usr/local/lib
    3. 在 GCC C++ 链接器/库/库中输入:pqxx
    4. 在项目中:#include

    现在尝试编译。如果没问题,尝试运行程序。如果您在帖子 #15 中遇到问题

    error while loading shared libraries: libpqxx-4.0.so: cannot open shared object file: No such file or directory
    
    1. 转到 /etc/ld.so.conf.d/ 并在其中创建名为 libpqxx-4.0.1.conf 的新文件,然后打开该文件并在其中键入 /usr/local/lib
    2. 然后发出命令 ldconfig

    就我而言,使用 libpqxx 和 C++11 连接 PostgreSQL 就是一切。祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 2020-09-29
      相关资源
      最近更新 更多