2

我正在尝试构建一个需要 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 选项,右键单击我的项目,打开 Configuration > Cmake > Advanced Values > 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 ‘&lt;’ token
     : tuple_element<__i, _Tuple> { };
                    ^
/usr/include/c++/4.9/functional:1034:20: error: expected ‘{’ before ‘&lt;’ token
/usr/include/c++/4.9/functional:1034:20: error: expected unqualified-id before ‘&lt;’ 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)>

它继续错误......有人可以帮我理解我做错了什么吗?

4

1 回答 1

0

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

我的问题(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++ Linker/Libraries/Library 中搜索路径类型:/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 就是一切。祝你好运。

于 2015-10-26T21:04:47.007 回答