I am trying to compile a simple piece of code which selects multiple rows from database using libpqxx library on centos 6.3.
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main(int argc, char* argv[])
{
char * sql;
try{
connection C("dbname=testdb user=postgres password=cohondob \
hostaddr=127.0.0.1 port=5432");
if (C.is_open()) {
cout << "Opened database successfully: " << C.dbname() << endl;
} else {
cout << "Can't open database" << endl;
return 1;
}
/* Create SQL statement */
sql = "SELECT * from COMPANY";
/* Create a non-transactional object. */
nontransaction N(C);
/* Execute SQL query */
result R( N.exec( sql ));
/* List down all the records */
for (result::const_iterator c = R.begin(); c != R.end(); ++c) {
cout << "ID = " << c[0].as<int>() << endl;
cout << "Name = " << c[1].as<string>() << endl;
cout << "Age = " << c[2].as<int>() << endl;
cout << "Address = " << c[3].as<string>() << endl;
cout << "Salary = " << c[4].as<float>() << endl;
}
cout << "Operation done successfully" << endl;
C.disconnect ();
}catch (const std::exception &e){
cerr << e.what() << std::endl;
return 1;
}
return 0;
}
I get the following linker error:
ASP:/root/test/libpqxx_folder$ g++ -g libpqxx_select_from_table.cpp -L/usr/lib64 -lpqxx -lpq -o select libpqxx_select_from_table.cpp: In function 'int main(int, char**)': libpqxx_select_from_table.cpp:21: warning: deprecated conversion from string constant to 'char*' /tmp/cc0bFRAY.o: In function
main': /root/test/libpqxx_folder/libpqxx_select_from_table.cpp:30: undefined reference to
pqxx::result::begin() const' /root/test/libpqxx_folder/libpqxx_select_from_table.cpp:31: undefined reference topqxx::tuple::operator[](int) const' /root/test/libpqxx_folder/libpqxx_select_from_table.cpp:32: undefined reference to
pqxx::tuple::operator const' /root/test/libpqxx_folder/libpqxx_select_from_table.cpp:33: undefined reference topqxx::tuple::operator[](int) const' /root/test/libpqxx_folder/libpqxx_select_from_table.cpp:34: undefined reference to
pqxx::tuple::operator const' /root/test/libpqxx_folder/libpqxx_select_from_table.cpp:35: undefined reference topqxx::tuple::operator[](int) const' /tmp/cc0bFRAY.o: In function
bool pqxx::field::to, std::allocator > >(std::basic_string, std::allocator >&) const': /usr/local/include/pqxx/field.hxx:190: undefined reference topqxx::field::c_str() const' /usr/local/include/pqxx/field.hxx:191: undefined reference to
pqxx::field::is_null() const' /usr/local/include/pqxx/field.hxx:192: undefined reference topqxx::field::size() const' /tmp/cc0bFRAY.o: In function
const_result_iterator': /usr/local/include/pqxx/result.hxx:334: undefined reference topqxx::tuple::tuple(pqxx::result const*, unsigned long)' /tmp/cc0bFRAY.o: In function
bool pqxx::field::to(int&) const': /usr/local/include/pqxx/field.hxx:119: undefined reference topqxx::field::c_str() const' /usr/local/include/pqxx/field.hxx:120: undefined reference to
pqxx::field::is_null() const' /tmp/cc0bFRAY.o: In functionbool pqxx::field::to<float>(float&) const': /usr/local/include/pqxx/field.hxx:119: undefined reference to
pqxx::field::c_str() const' /usr/local/include/pqxx/field.hxx:120: undefined reference to `pqxx::field::is_null() const' collect2: ld returned 1 exit status
Thanks in advance for your help!