これは、私の問題を説明するために考えることができる最も基本的なlibpqの例についてです。ここでの目標は、エスケープされた文字列を印刷することだけです。
#include <iostream>
#include <libpq-fe.h>
#include <string.h>
using namespace std;
int main(){
PGconn *db;
char connstring[] = "dbname=TheInternet";
db = PQconnectdb(connstring);
char url[] = "http://www.goo'gle.com/";
cout<<PQescapeLiteral(db, (const char *)url, (size_t) strlen(url))<<"\n";
}
私がコンパイルするとき:
g++ PQescapeLiteral_test.cpp -lpq
またはでさえ:
g++ PQescapeLiteral.cpp -I/usr/include/pgsql:/usr/include/pgsql/server:/usr/include/pgsql/server/libpq -lpq
エラーが発生します:
PQescapeLiteral.cpp: In function ‘int main()’:
PQescapeLiteral.cpp:12: error: ‘PQescapeLiteral’ was not declared in this scope
セクション31.3.4のpgsql9.0のマニュアルでPQescapeLiteralを見つけました。:SQLコマンドに含めるための文字列のエスケープ。私はyumのlibpqとlibpq-develの最新バージョンを持っているので、それが定義されているはずだと確信しています。
誰かが私を正しい方向に向けることができれば、私はそれをいただければ幸いです。