Я пытался использовать libpxx с G-WAN 4.3.14, вот мой исходный код:
//#define USE_GWAN
#include <cstdio>
#include <iostream>
#include <pqxx/pqxx>
#ifdef USE_GWAN
#include "gwan.h"#pragma link pqxx
#pragma link pq
#define print(x) xbuf_cat(get_reply(argv),x)
#else
#define print(x) printf(x)
#endif
using namespace std;
using namespace pqxx;
int main(int argc,char** argv) {
char cstr[] = "dbname=censored user=censored password=censored hostaddr=127.0.0.1 port=5432";
connection C(cstr);
if(C.is_open()) {
print("ok\n");
} else {
print("err\n");
}
return 200;
}
Это нормально работает, когда я попытался скомпилировать его нормально:
g++ -lpqxx -lpq pg.cpp
Но когда я раскомментирую //#define USE_GWAN
и попробовал это на G-WAN, это показывает:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: pg.cpp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: cannot find -ltestn
collect2: error: ld returned 1 exit status
1|#include<cstdio>
2|#include<iostream>
3|#include "gwan.h"4|#include<pqxx/pqxx>
5|#pragma link pqxx
6|#pragma link pq
7|
8|using namespace std;
Обновить: при закрытии G-WAN и запуске его снова появляется другая ошибка:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: pg.cpp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc: error: user=censored: No such file or directory
gcc: error: password=censored: No such file or directory
gcc: error: hostaddr=127.0.0.1: No such file or directory
gcc: error: port=5432: No such file or directory
1|#define USE_GWAN
2|
3|#include <cstdio>
4|#include <iostream>
5|#include <pqxx/pqxx>
6|#ifdef USE_GWAN
7|#include "gwan.h"8|#pragma link pqxxTo run G-WAN, you must fix the error(s) or remove this Servlet.
все библиотеки установлены правильно
/usr/lib/libpq.so -> libpq.so.5.6*
/usr/lib/libpq.so.5 -> libpq.so.5.6*
/usr/lib/libpq.so.5.6*
/usr/lib/libpqxx-4.0.so*
/usr/lib/libpqxx.so -> libpqxx-4.0.so*
Что-нибудь, что я должен добавить, чтобы использовать libpqxx с G-WAN?
Переместите 2 строки кода внизу вверху вашего скрипта:
#pragma link pqxx
#pragma link pq
В настоящее время они являются строками № 5 и № 6 в вашем сценарии.
G-WAN прагма директивы должны быть на первом месте, прежде чем #includes
и условные команды препроцессора (#ifdef
…).
Кроме того, в вашем C ++ скрипте #pragma ссылка директивы определяют библиотеки без двойных кавычек. Во всех примерах G-WAN с использованием директив прагмы используются двойные кавычки, что, кстати, обязательно для строк в стандарте C:
#pragma link "pqxx"#pragma link "pq"