Фон
Я использую Linux... и пытаюсь написать простую небольшую программу на С++, которая подключается к базе данных postgresql.
Я пытаюсь следовать этой статье http://www.tutorialspoint.com/postgresql/postgresql_c_cpp.htm
Проблема
Мне удалось скомпилировать библиотеку... и теперь я вижу, что у меня на компьютере есть следующая папка /usr/local/include/pqxx
Но когда я пытаюсь написать базовый код и скомпилировать его, я получаю следующую ошибку:
devbox2:/var/abus# g++ testdb.cpp -lpqxx -lpq
testdb.cpp:2:22: fatal error: pqxx/pqxx: No such file or directory
#include <pqxx/pqxx>
^
compilation terminated.
Исходный код
Вот как выглядит код:
1 #include <iostream>
2 #include <pqxx/pqxx>
3
4 using namespace std;
5 using namespace pqxx;
6
7 int main(int argc, char* argv[])
8 {
9 try{
10 connection C("dbname=testdestination user=testuser password=testpassword \
11 hostaddr=127.0.0.1 port=5432");
12 if (C.is_open()) {
13 cout << "Opened database successfully: " << C.dbname() << endl;
14 } else {
15 cout << "Can't open database" << endl;
16 return 1;
17 }
18 C.disconnect ();
19 }catch (const std::exception &e){
20 cerr << e.what() << std::endl;
21 return 1;
22 }
23 }
Что я уже пробовал:
Я копался в папке /usr/local/include/pqxx и вижу, что там есть файл с именем pqxx... но у него нет никакого расширения.
Вот фрагмент команды ls -lah для этой папки:
-rw-r--r-- 1 root root 637 Dec 8 21:42 pipeline
-rw-r--r-- 1 root root 7.5K Dec 8 21:42 pipeline.hxx
-rw-r--r-- 1 root root 1.1K Dec 8 21:42 pqxx
-rw-r--r-- 1 root root 728 Dec 8 21:42 prepared_statement
-rw-r--r-- 1 root root 8.2K Dec 8 21:42 prepared_statement.hxx
Я также убедился, что мой PATH включает папку /usr/local/include/pqxx. Вот как выглядит мой PATH:
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/gcc:/usr/local/include/pqxx:/usr/local/include'
Я не уверен, что еще я должен проверить. Мы ценим любые предложения. Спасибо.
PATH
ничего не изменит; это используется для поиска программ, а не заголовков.cpp -v
должен сообщить вам путь поиска - убедитесь, что он включает/usr/local/include
(должен)< /а>. Вы можете попробовать добавить-I/usr/local/include
в команду компиляции, чтобы убедиться, что она там выглядит. - person Mike Seymour   schedule 09.12.2014