Я пытаюсь скомпилировать очень простую программу, которая устанавливает соединение с базой данных и печатает имя базы данных. Я могу скомпилировать в командной строке, но не могу сделать это в Netbeans. Я использую Netbeans IDE 6.9.1 в Ubuntu 10.04 и использую g ++ 4.4.3 и libpqxx 2.6.9, установленные с помощью apt-get. Код следует:
#include <iostream>
#include <pqxx/connection>
using namespace std;
using namespace pqxx;
int main(int argc, char *argv[])
{
try
{
// Set up a connection to the backend
connection C(argv[1]);
cout << C.dbname() << endl;
}
catch (const exception &e)
{
// All exceptions thrown by libpqxx are derived from std::exception
cerr << "Exception: " << e.what() << endl;
return 2;
}
return 0;
}
Я могу успешно скомпилировать, используя следующее:
g++ -g -o example -L/usr/lib/ -lpqxx -lpq dbtest001.cpp
Netbeans терпит неудачу с этим:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/home/dev/work/cpptest'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/cpptest
make[2]: Entering directory `/home/dev/work/cpptest'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++ -o dist/Debug/GNU-Linux-x86/cpptest build/Debug/GNU-Linux-x86/main.o
make[2]: Leaving directory `/home/dev/work/cpptest'
make[1]: Leaving directory `/home/dev/work/cpptest'
build/Debug/GNU-Linux-x86/main.o: In function `main':
/home/dev/work/cpptest/main.cpp:13: undefined reference to `pqxx::connection_base::dbname()'
build/Debug/GNU-Linux-x86/main.o: In function `connect_direct':
/usr/include/pqxx/connection.hxx:84: undefined reference to `pqxx::connectionpolicy::connectionpolicy(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/include/pqxx/connection.hxx:84: undefined reference to `vtable for pqxx::connect_direct'
build/Debug/GNU-Linux-x86/main.o: In function `~connect_direct':
/usr/include/pqxx/connection.hxx:82: undefined reference to `vtable for pqxx::connect_direct'
/usr/include/pqxx/connection.hxx:82: undefined reference to `pqxx::connectionpolicy::~connectionpolicy()'
build/Debug/GNU-Linux-x86/main.o: In function `basic_connection':
/usr/include/pqxx/basic_connection.hxx:61: undefined reference to `pqxx::connection_base::connection_base(pqxx::connectionpolicy&)'
/usr/include/pqxx/basic_connection.hxx:62: undefined reference to `pqxx::connection_base::init()'
build/Debug/GNU-Linux-x86/main.o: In function `~basic_connection':
/usr/include/pqxx/basic_connection.hxx:70: undefined reference to `pqxx::connection_base::close()'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/cpptest] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 622ms)
Может кто-нибудь предложить какое-либо понимание того, почему это не удается? Некоторое время я был вдали от C ++, поэтому я не так остро разбираюсь в том, где что-то пошло не так, как раньше.