gpt4 book ai didi

postgresql - PQescapeLiteral 未定义?

转载 作者:行者123 更新时间:2023-11-29 13:37:46 25 4
gpt4 key购买 nike

这是我能想到的最基本的 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

我在 pgsql 9.0 手册的第 31.3.4 节中找到了 PQescapeLiteral:转义字符串以包含在 SQL 命令中。我有来自 yum 的最新版本的 libpq 和 libpq-devel,所以我很确定它应该被定义。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

使用 PostgreSQL 9.0.1 header 对我来说效果很好。您使用的是哪个版本的 postgresql 头文件和库? PQescapeLiteral 显然是在 9.0 中添加的:http://developer.postgresql.org/pgdocs/postgres/release-9-0.html#AEN104548

你期望 libpq.so 在哪里?您显示带有 -I 开关的编译器命令以将头文件定位在非标准位置,但没有相应的 -L 开关来定位库。

关于postgresql - PQescapeLiteral 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com