Нет pqxx::tuple в библиотеке libpqxx?

Яve got the newest ubuntu and Iсделал:

sudo apt-get install postgresql postgresql-contrib
sudo apt-get install libpqxx-4.0v5
sudo apt-get install libpqxx-dev

Я не могу скомпилировать программу, использующую pqxx::tuple.

Сборник:

g++ test.cpp -I/usr/local/include/ -lpqxx -lpq
or
g++ test.cpp -lpqxx -lpq -o test

Вывод консоли:

test.cpp: In function ‘int main()’:
test.cpp:15:21: error: ‘tuple’ in namespace ‘pqxx’ does not name a type
const pqxx::tuple row = r[rownum];

Это проблемная строка:

const pqxx::tuple row = r[rownum];

Когда я удаляю эту строку, программа работает правильно.

#include <iostream>
#include <pqxx/pqxx>
int main()
{
  try {
    pqxx::connection c("dbname=mydb user=postgres port=5432 password=*** hostaddr=127.0.0.1");
    pqxx::work w(c);
    pqxx::result r = w.exec("SELECT * FROM get_player_data_function()");
    w.commit();
    const int num_rows = r.size();
    for (int rownum=0; rownum < num_rows; ++rownum) {
        const pqxx::tuple row = r[rownum];
    }
  }
  catch (const std::exception &e) {
    std::cerr << e.what() << std::endl;
  }
}

person user3455638    schedule 04.06.2017    source источник


Ответы (1)


Не уверен... но если я правильно понимаю эту страницу, вам нужно заменить pqxx::tuple на pqxx::row.

Итак, я полагаю

const pqxx::row row = r[rownum];
person max66    schedule 04.06.2017
comment
вывод после изменения: /tmp/ccEpNRjn.o: В функции pqxx::result::operator[](unsigned long) const': test.cpp:(.text._ZNK4pqxx6resultixEm[_ZNK4pqxx6resultixEm]+0x27): undefined reference to pqxx::row::row(pqxx::result const*, unsigned long)' collect2: error: ld вернул 1 статус выхода - person user3455638; 05.06.2017
comment
@ user3455638 - предыдущая ошибка была ошибкой компиляции; это ошибка связывания; поэтому я полагаю, вам нужно связать другую библиотеку. Но, извините, я не эксперт в pqxx - person max66; 05.06.2017
comment
Ты прав. Сначала измените pqxx::tuple на pqxx::row. Во-вторых, ошибка компоновщика. Скомпилируйте с помощью -L/usr/local/lib и/или -I/usr/local/include g++ test.cpp -I/usr/local/include -L/usr/local/lib -lpqxx -lpq. PQXXlib include и lib находятся в путях /usr/local/*. - person user3455638; 05.06.2017